JavaFX Treeview 不显示任何项目
JavaFX Treeview shows no items
我尝试在我的 JavaFX 应用程序中实现 TreeView。但不幸的是没有显示任何项目,但我找不到问题。我搜索了一些示例并按照他们的方式做了。
我在 SceneBuilder 中将一个 TreeView 控件放入我的 FXML 文件,并选择生成的 ControllerClass,并从此 class 选择 Treeview 字段作为 SceneBuilder 中 TreeView 控件的 ID。
这是我的控制器代码:
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);
而不是 this.treeview = new TreeView<>(root);
我尝试在我的 JavaFX 应用程序中实现 TreeView。但不幸的是没有显示任何项目,但我找不到问题。我搜索了一些示例并按照他们的方式做了。
我在 SceneBuilder 中将一个 TreeView 控件放入我的 FXML 文件,并选择生成的 ControllerClass,并从此 class 选择 Treeview 字段作为 SceneBuilder 中 TreeView 控件的 ID。
这是我的控制器代码:
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);
this.treeview = new TreeView<>(root);