Я редактирую несколько узлов с TreeCellEditor на моем JTree.
Я передаю все выбранные узлы редактору в коллекции.
DeviceEditor deviceEditor = new DeviceEditor(nodes);
itemTree.setCellEditor(deviceEditor);
Я сравниваю все узлы и список "Несколько значений" в форме редактора, где присутствуют различные значения.
В форме есть кнопка «Обновить» для запуска функции JTree.stopCellEditing, показанной здесь:
@Override
public boolean stopCellEditing() {
try {
DeviceEditor.UPDATE_DEVICES(nodes, multiValueDevice);
return true;
} catch (IPConverter.InvalidIPException ex) {
Exceptions.printStackTrace(ex);
return false;
}
Все функции редактирования ячеек работают правильно, но у меня возникла проблема с JTree.stopEditing (), показанный здесь:
deviceEditor.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
System.out.println("ACTION COMMAND= " + ae.getActionCommand());
if ("Update".equals(ae.getActionCommand())) {
//get the Device From the editor.
//update all the nodes' userObjects to the values of the editor except the ones with <Multiple Values>
//stopEditing expects an Object from DeviceEditor. We need a way to stopEditing without providing an object.
itemTree.stopEditing(); //update the nodes
}
if ("Cancel".equals(ae.getActionCommand())) {
itemTree.cancelEditing();
}
}
});
itemTree.stopEditing, кажется, вызывает getCellEditorValue из TreeCellEditor.У меня нет ничего, чтобы предоставить здесь, так как я уже отредактировал все узлы.
Что нужно сделать здесь, чтобы закрыть редактор?