我尝试在我的 JavaFX 应用程序中实现一个 TreeView.但遗憾的是没有显示任何项目,但我找不到问题.我搜索了一些例子,并喜欢他们.
I try to implement an TreeView in my JavaFX App. But unfortenatly no items are showed, but i cannot find an issue. I search for some example and did it like them.
我在 SceneBuilder 中将一个 TreeView 控件放入我的 FXML 文件中,并选择了生成的 ControllerClass,并从该类中选择了 Treeview 字段作为 SceneBuilder 中 TreeView 控件的 ID.
I put an TreeView Control to my FXML File in SceneBuilder and selected the ControllerClass which was generated and slected the Treeview field from this class as an id for the TreeView Control in SceneBuilder.
这是我的控制器代码:
public class MainSceneController implements Initializable { @FXML TreeView<String> treeview; @FXML Button btn; @Override public void initialize(URL url, ResourceBundle rb) { TreeItem<String> root = new TreeItem<>("root"); for(int i = 0; i < 10; i++) { TreeItem<String> child = new TreeItem<>("Children " + i); root.getChildren().add(child); } root.setExpanded(true); this.treeview = new TreeView<>(root); treeview.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); } @FXML public void addTreeViewItem() { } @FXML private void showAddStreamDialog() { try { Parent p; p = FXMLLoader.load(getClass().getResource("AddStream.fxml")); Scene s = new Scene(p); Stage stage = new Stage(); stage.initModality(Modality.APPLICATION_MODAL); stage.setScene(s); stage.show(); } catch (IOException ex) { Logger.getLogger(MainSceneController.class.getName()).log(Level.SEVERE, null, ex); } }}
知道有什么问题吗?
推荐答案您不应将新实例分配给 this.treeview,因为该字段已被 FXLoader 初始化.因此,您只需设置根项 this.treeview.setRoot(root);
You shouldn't assign new instance to the this.treeview because this field was already initialized by the FXLoader. So instead of this.treeview = new TreeView<>(root); you need simply to set the root item this.treeview.setRoot(root);
更多推荐
JavaFX Treeview 不显示任何项目
发布评论