Отмена изменения имени у TreeNode
Есть программа, имеющая в себе дерево. Я бы хотел сделать так, чтобы изменение имени ноды по двойному клику происходило только при выполнении определённого условия. Сейчас у меня происходит так:
class TreeElement{
private String name;
private String type;
...Some basic methods...
}
class EntryEditor extends DefaultCellEditor {
private TreeElement entry;
private JTextField box;
public EntryEditor() {
super(new JTextField());
box = ((JTextField) editorComponent);
}
@Override
public Component getTreeCellEditorComponent(final JTree tree, final Object value, final boolean isSelected, final boolean expanded, final boolean leaf, final int row) {
entry = (TreeElement) ((DefaultMutableTreeNode) value).getUserObject();
if (some condition) {
JOptionPane.showMessageDialog(null, "Not done");
return box;
}
else{
JOptionPane.showMessageDialog(null, "Done!");
box.setText(box.getName());
}
return box;
}
@Override
public Object getCellEditorValue() {
entry.setName(box.getText());
return entry;
}
}
Но при этом всё равно после окошка появляется поле ввода, и значение можно изменить. Как это исправить? Спасибо!
Источник: Stack Overflow на русском