之前我曾問過在重命名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()); }}我收到此錯誤:線程“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 = (CustomTreeNode) path.getLastPathComponent(); node.getResource().setName((String) node.getUserObject()); //For debugging System.out.println(node.getResource().getName());}以及CustomTreeCellEditor中的此代碼public TreePath getLastPath() { return lastPath;}我得到了同樣的錯誤(我希望我會)。我所擁有的應該是有用的,所以剩下的唯一真正的問題是,“我為什么會得到這個錯誤,我該如何修復它?”但如果有人有更好的方法來實現這個目標,我愿意傾聽。
從CellEditorListener獲取Edited TreeNode
ibeautiful
2019-09-06 16:26:26