亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從CellEditorListener獲取Edited TreeNode

從CellEditorListener獲取Edited TreeNode

ibeautiful 2019-09-06 16:26:26
之前我曾問過在重命名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;}我得到了同樣的錯誤(我希望我會)。我所擁有的應該是有用的,所以剩下的唯一真正的問題是,“我為什么會得到這個錯誤,我該如何修復它?”但如果有人有更好的方法來實現這個目標,我愿意傾聽。
查看完整描述

3 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

我找到了一個非常簡單的解決方案。重命名TreeNode時,它最終成為樹中唯一選定的節點。因此,我能夠使用:


    CustomTreeNode node = (CustomTreeNode) tree.getLastSelectedPathComponent();


查看完整回答
反對 回復 2019-09-06
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

我敢說這不是很理想嗎?如果你的JTree選擇模型混淆多重選擇怎么辦,那么重命名不會取消其他選擇?或者如果您以某種方式更改了JTree,那么您可以在不選擇的情況下進行編輯?我建議一種方法是繼承DefaultTreeCellEditor(DTCE),在構造函數中添加CellEditorListener,覆蓋getTreeCellEditorComponent,然后通過編輯到字段中生成必須保留的任何數據。DTCE中一個有用的(受保護的)字段是“lastRow”...您可以從editStopped內部訪問它以返回到您的節點,在大多數情況下。

查看完整回答
反對 回復 2019-09-06
  • 3 回答
  • 0 關注
  • 643 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號