2013-07-05 32 views
0

我想在用戶編輯DefaultMutableTreeNode時收聽文本更改,當JTree設置爲可編輯時。就像,我想顯示用戶在節點中輸入的狀態標籤。DefaultMutableTreeNode的DocumentListener

不幸的是,我沒有找到DocumentListener作爲DefaultMutableTreeNode來聽取DefaultMutableTreeNode中插入,刪除和修改文本的更改。

任何人都可以說我該怎麼做?任何工作答案表示讚賞。提前致謝。

回答

1

一旦準備好編輯器,您可以將DocumentListener添加到單元編輯器的editingComponent。從example開始,將下列方法添加到MyTreeCellEditor

@Override 
public Component getTreeCellEditorComponent(JTree tree, Object value, boolean isSelected, boolean expanded, boolean leaf, int row) { 
    final Component c = super.getTreeCellEditorComponent(tree, value, isSelected, expanded, leaf, row); 
    JTextField jtf = (JTextField) editingComponent; 
    jtf.getDocument().addDocumentListener(new DocumentListener() { 
     @Override 
     public void insertUpdate(DocumentEvent e) { 
      print(e); 
     } 

     @Override 
     public void removeUpdate(DocumentEvent e) { 
      print(e); 
     } 

     @Override 
     public void changedUpdate(DocumentEvent e) { 
      print(e); 
     } 
     private void print(DocumentEvent e) { 
      System.out.println(e); 
     } 
    }); 
    return c; 
}