之前我曾问过在重命名TreeNode时如何触发事件(这里).我的问题得到了回答,但我遇到了另一个问题.我需要在CellEditorListener的editingStopped事件中访问正在编辑的TreeNode.这是我必须这样做的代码:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
异常的线程 "AWT-EventQueue的-0" java.lang.ClassCastException:javax.swing.tree.DefaultTreeCellEditor中的$ 1不能转换为javax.swing.tree.DefaultTreeCellEditor中
编辑:在另一次尝试中,我在CustomCellEditorListener中使用了此代码
public void editingStopped(ChangeEvent e) {
TreePath path = ((CustomTreeCellEditor) e.getSource()).getLastPath(); //This gives me the error.
CustomTreeNode node …Run Code Online (Sandbox Code Playgroud)