我有了一個TreeView控件FXML文件:的JavaFX - 包裝FXML Java類控制器
<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="500.0" xmlns:fx="http://javafx.com/fxml" fx:controller="test.MyControllerClass">
<TreeView fx:id="locationTreeView" layoutX="12.0" layoutY="158.0" prefHeight="193.0" prefWidth="471.0" />
然後我的Java類控制器需要與此樹視圖來包裝,並添加TreeItem的動態。這就是問題所在,它不會加載這些TreeItem的。這是我的控制器下面的測試代碼:
public class MyControllerClass extends Application {
@FXML
private TreeView<String> locationTreeView;
@Override
public void start(Stage stage) throws Exception {
stage.initStyle(StageStyle.TRANSPARENT);
stage.getIcons().add(new Image(getClass().getResourceAsStream("myIcon.png")));
Parent root = FXMLLoader.load(getClass().getResource("myInterface.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
loadTreeItems();
stage.show();
}
// Just a simple example that still doesn't works
private void loadTreeItems() {
try {
TreeItem<String> root = new TreeItem<String>("Root Node");
root.setExpanded(true);
root.getChildren().addAll(
new TreeItem<String>("Item 1"),
new TreeItem<String>("Item 2"),
new TreeItem<String>("Item 3")
);
locationTreeView = new TreeView<String>(root);
} catch (Exception exc) {
System.out.println("Error: " + exc.getMessage());
}
}
public static void main(String[] args) {
launch(args);
}
}
任何想法爲什麼它不工作?
非常感謝您的時間@jewelsea!很好的解釋!同時也感謝你編寫正確的方法! – Leonardo 2013-03-18 13:47:01
你不需要分開類。你只需要類MyControllerClass中的'initialize'方法。 – 2014-11-24 20:08:12
@Nuno將JavaFX控制器和JavaFX應用程序放在同一個類中是不好的做法,因爲它既容易混淆又容易出錯。雖然有可能讓這樣的設置起作用,但我不推薦這樣的解決方案,也不會將它發佈到公共論壇。 – jewelsea 2014-11-24 20:15:56