У меня есть TreeView со многими TreeItem. что я хочу сделать, так это то, что я разрешаю модификацию выбранного TreeItem и отключать его для других. Чтобы получить все TreeView быть изменяемым я использую:JavaFX - как установить CellFactory для конкретного TreeItem
syTree.setEditable(true);
syTree.setCellFactory(TextFieldTreeCell.forTreeView());
}
syTree.setOnEditCommit(new EventHandler<TreeView.EditEvent<String>>() {
@Override
public void handle(TreeView.EditEvent<String> t) {
syTree.getRoot().getChildren().set(syTree.getRow(t.getTreeItem()), new TreeItem<String>(t.getNewValue()));
System.out.println("setOnEditCommit");
//}
}
});
syTree.setOnEditCancel(new EventHandler<TreeView.EditEvent<String>>() {
@Override
public void handle(TreeView.EditEvent<String> t) {
System.out.println("setOnEditCancel");
}
});
Эта линия просто изменить все к TextField элементов дерева при попытке изменить: syTree.setCellFactory(TextFieldTreeCell.forTreeView());
Как это сделать для конкретного TreeItem? Любая помощь, пожалуйста?
Вы говорите, что если вы дважды щелкните ячейку в дереве, чтобы попытаться изменить его, все ячейки отображения 'TextField' ?? Похоже, что с некоторым кодом, который вы нам не показываете, есть что-то совершенно неправильное. Можете ли вы создать и опубликовать простой [MCVE] (http://stackoverflow.com/help/mcve), который показывает это поведение? –
Этот код делает так, как вы сказали точно! и это работает! (Дважды щелкните элемент -> TreeItem в TextFied, нажав кнопку ввода -> новый TreeItem с измененным значением, возьмите старое место «это то, что делает setEditCommit»), что я все еще пытаюсь сделать, для например, активируйте эту функцию только для детей определенного TreeItem, потому что теперь они работают для всех. – Calips
Это технически возможно? – Calips