Получить отредактированный TreeNode от CellEditorListener
Ранее я спрашивал, как вызвать событие, когда TreeNode был переименован (Вот). На мой вопрос ответили, но я столкнулся с другой проблемой. Мне нужно получить доступ к TreeNode, который редактируется в событии CellSditorListener editStopped. Вот код, который я должен сделать так:
package com.gamecreator;
import javax.swing.event.CellEditorListener;
import javax.swing.event.ChangeEvent;
import javax.swing.tree.DefaultTreeCellEditor;
public class CustomCellEditorListener implements CellEditorListener {
public CustomCellEditorListener() {
}
public void editingCanceled(ChangeEvent e) {
}
public void editingStopped(ChangeEvent e) {
DefaultTreeCellEditor editor = (DefaultTreeCellEditor) e.getSource(); //This gives me the error.
CustomTreeNode node = //What do I put here???;
node.getResource().setName((String) node.getUserObject());
//For debugging
System.out.println(node.getResource().getName());
}
}
Я получаю эту ошибку:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.tree.DefaultTreeCellEditor$1 cannot be cast to javax.swing.tree.DefaultTreeCellEditor
РЕДАКТИРОВАТЬ: В другой попытке я использовал этот код в CustomCellEditorListener
public void editingStopped(ChangeEvent e) {
TreePath path = ((CustomTreeCellEditor) e.getSource()).getLastPath(); //This gives me the error.
CustomTreeNode node = (CustomTreeNode) path.getLastPathComponent();
node.getResource().setName((String) node.getUserObject());
//For debugging
System.out.println(node.getResource().getName());
}
и этот код в CustomTreeCellEditor
public TreePath getLastPath() {
return lastPath;
}
Я получил ту же ошибку (я ожидал, что будет). Что у меня должно работать, так что единственный реальный вопрос остается: «Почему я получаю сообщение об ошибке и как я могу это исправить?», & Quot; но если у кого-то есть лучший способ сделать это, я готов выслушать.
РЕДАКТИРОВАТЬ 2: Я сделал небольшой пример того, чего я пытаюсь достичь, и который можно найти.Вот (Это архив Eclipse).