Использование JTable для редактора ячеек JTree - PullRequest
2 голосов
/ 08 августа 2010

Я хотел бы использовать JTable для редактирования JTree, я расширил DefaultTreeCellEditor и реализовал isCellEditable getTreeCellEditorComponent, в getTreeCellEditorComponent я возвращаю JTable.Все работает до этого момента, когда узел, отредактированный свингом, отображает JTable, заполненный содержимым объектов, однако, когда редактирование завершено, valueForPathChanged из DefaultTreeModel никогда не вызывается.Если я использую текстовое поле для редактирования, которое по умолчанию, все работает нормально.

1 Ответ

1 голос
/ 08 августа 2010

JTextField имеет notifyAction, названный "notify-field-accept" и обычно связанный с KeyEvent.VK_ENTER, который сигнализирует от CellEditor до stopEditing() и в конечном итоге вызывает DefaultTreeCellEditor method, valueForPathChanged().

Непонятно, как вы указываете, что редактирование для вашего JTable завершено.Вы должны быть в состоянии сделать что-то вроде JTextField в CellEditorListener, который добавляется в ваш пользовательский редактор через addCellEditorListener().

Кстати, valueForPathChanged() упоминает, что «Если вы используете пользовательские объекты пользователя в TreeModel, вам нужно будет создать подкласс этого класса и установить для объекта пользователя измененного узла что-то значимое».

...