ListCell我正在嘗試為 JavaFX創(chuàng)建一個(gè)非常簡單的自定義Listview。運(yùn)行應(yīng)用程序時(shí),有一些項(xiàng)目沒有ListView任何內(nèi)容。它們是可點(diǎn)擊的,但是是空的。如下圖所示:我正在使用 JDK 12 和基于 Maven JFX Archetype(archetype-artifactid:javafx-archetype-fxml, groupid:org.openjfx) 的設(shè)置。我遵循了名為“Turais Custom ListCell”的指南。App.javapublic class App extends Application {private static Scene scene;@Overridepublic void start(Stage stage) throws IOException { scene = new Scene(loadFXML("primary")); stage.setScene(scene); stage.show();}static void setRoot(String fxml) throws IOException { scene.setRoot(loadFXML(fxml));}private static Parent loadFXML(String fxml) throws IOException { FXMLLoader fxmlLoader = new FXMLLoader(App.class.getResource(fxml + ".fxml")); return fxmlLoader.load();}public static void main(String[] args) { launch();}}PrimaryController.javapublic class PrimaryController implements Initializable {ObservableList<Student> students;@FXMLprivate ListView<Student> listView1;@FXMLprivate void switchToSecondary() throws IOException { App.setRoot("secondary");}public PrimaryController(){ super(); students = FXCollections.observableArrayList(); students.add(new Student());}@Overridepublic void initialize(URL url, ResourceBundle resourceBundle) { listView1.setItems(students); listView1.setCellFactory(new Callback<ListView<Student>, ListCell<Student>>() { @Override public ListCell<Student> call(ListView<Student> listView) { return new StudentListViewCell(); } });}}我希望有一個(gè)ListCell中間有一個(gè)標(biāo)簽,上面寫著“rightText”的單曲。但似乎我的自定義列表單元格甚至沒有呈現(xiàn)。有什么建議么?
1 回答

元芳怎么了
TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
除了您的實(shí)現(xiàn)看起來比需要的復(fù)雜得多之外,您的實(shí)際問題非常簡單。
您的ListCell.fxml文件未將 分配fx:id給您的AnchorPane. 因此,當(dāng)您在StudentListViewCell.java類中定義它時(shí),您實(shí)際上是在創(chuàng)建一個(gè)新的AnchorPane且不包含您的Label.
只需更改ListCell.fxml文件并分配 id 即可解決該問題:
<AnchorPane fx:id="anchorPane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.172-ea"
xmlns:fx="http://javafx.com/fxml/1">
<children>
<Label fx:id="label1" layoutX="293.0" layoutY="190.0" text="Label"/>
</children>
</AnchorPane>
添加回答
舉報(bào)
0/150
提交
取消