JTree节点的编辑事件
发表于:2009-06-02 | 零回复

  利用Swing开发桌面应用程序中,JTree是必不可少的利器,比如Windows的资源管理器的文件夹侧边栏,我们常用的Outlook的侧边栏,Eclipse的Navigator、Package等都使用了Tree控件。

  很多情况下,Tree的节点是允许编辑的,调用JTree的setEditable(true)方法可以生成一棵可编辑的树。按下F2键,节点就变为可编辑状态。和Swing中很多组件一样(JList、JTable)JTree并不支持编辑,而我们按下F2时能够进行编辑的其实并不是JTree本身,而是利用另外的JTextField来实现的。所以要想捕获JTree的编辑事件,就不能直接对JTree追加Listener,而是要对当前需要编辑的节点的JTextField追加Listener。

  JTree.getCellEditor()可以获得编辑树中条目的编辑器–TreeCellEditor,只要为其追加Listener就可以了。如下:

JTeee.getCellEditor().addCellEditorListener(new CellEditorAction());

  CellEditorAction实现了CellEditorListener接口。该接口提供了两个方法:editingCanceled、editingStopped。当放弃编辑时editingCanceled被调用,完成编辑时editingStopped被调用。以下是CellEditorAction的实现:

private class CellEditorAction implements CellEditorListener {

public void editingCanceled(ChangeEvent e) {
System.out.println(“=================================cancle”);
}

public void editingStopped(ChangeEvent e) {
System.out.println(“=================================ok”);
}
}

评论留言