0
您好我正在處理與javafx中的treeView相關的應用程序,我在[1]之前問過這個問題:JavaFx: How to Use existing branch with leafs as a newly add branch,但沒有得到任何答案。我試圖自己,併到達這裏JavaFx:使用現有的分支作爲新添加的分支
public class Main extends Application
{
private static TreeItem<String> item2;
@SuppressWarnings("unchecked")
@Override
public void start(Stage primaryStage)
{
BorderPane border = new BorderPane();
Scene scene = new Scene(border,300,300);
primaryStage.setTitle("BorderPane");
primaryStage.setScene(scene);
primaryStage.show();
TreeItem<String> tree = new TreeItem<String>("Root");
item2 = new TreeItem<String>("poles");
TreeItem<String> item2Child1 = new TreeItem<String>("X");
TreeItem<String> item2Child2 = new TreeItem<String>("Y");
item2.getChildren().addAll(item2Child1,item2Child2);
//item2.setExpanded(true);
tree.setExpanded(true);
tree.getChildren().addAll(item2);
TreeView<String> treeView = new TreeView<String>(tree);
treeView.setCellFactory(new Callback<TreeView<String>,TreeCell<String>>(){
@Override
public TreeCell<String> call(TreeView<String> p) {
return new AddMenuTreeCell();
}
});
border.setCenter(treeView);
}
private static class AddMenuTreeCell extends TextFieldTreeCell<String> {
private ContextMenu menu = new ContextMenu();
private TextField textField;
public AddMenuTreeCell() {
MenuItem item1 = new MenuItem("Insert poles");
menu.getItems().add(item1);
item1.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent arg0) {
getTreeItem().getChildren().add(item2);
}
});
}
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
if (isEditing()) {
if (textField != null) {
textField.setText(getString());
}
setText(null);
setGraphic(textField);
} else {
setText(getString());
setGraphic(getTreeItem().getGraphic());
if (!(getTreeItem().isLeaf() && getTreeItem().getParent() == null)){
setContextMenu(menu);
}
}
}
}
private String getString() {
return getItem() == null ? "" : getItem().toString();
}
}
}
與此用戶可以添加現有的分支「杆」。但問題是,用戶無法在任何極點分支中添加Poles。
[應用工作這樣的用戶必須使用現有的分支「極點」作爲新加入的分支,並可以添加儘可能多極,因爲他想要的任何分支內。]
什麼好主意會有所幫助請。
謝謝
什麼是條件'if(!(空&& getTreeItem()。getParent()== null))'應該是?如果'empty'爲true,那麼'getTreeItem()。getParent()'會拋出一個空指針異常。而且,你已經將「else」塊封裝爲「if(empty)」,所以你知道'empty'是錯誤的......你在那裏意味着什麼? –
@James_D這是要獲得右擊滾動「添加極點」超過根和分支(極點)。 – Mudasir
那顯然不是它所做的,但?你能解決這個邏輯嗎?我不明白你爲什麼需要一個「if」。 –