【问题标题】:Disabling 3-Click Edit of a JTree node but keeping keyoard keys to edit for saving the old name of the node prior to edit禁用 JTree 节点的 3 单击编辑,但保留要编辑的键盘键以在编辑之前保存节点的旧名称
【发布时间】:2014-01-15 13:17:27
【问题描述】:

我希望能够仅使用 F2ENTER 键来编辑节点名,而不是使用鼠标。我添加了这两行,它们正在工作:

jTree1.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "startEditing");
jTree1.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0), "startEditing");

但是如何禁用鼠标编辑?有没有类似的方法:jTree1.setToggleClickCount(2);

我想这样做的原因是我想保留节点的旧名称,所以我将创建一个 keylistener 来监听 F2 和 ENTER 并保持名称不变。那有意义吗?有什么想法吗?

【问题讨论】:

  • 旁白:不要使用 KeyListener,使用键绑定

标签: java swing jtree


【解决方案1】:

您可以在TreeCellEditor 的帮助下禁用鼠标编辑,尝试下一个代码:

DefaultTreeCellEditor editor = new DefaultTreeCellEditor(t, (DefaultTreeCellRenderer) t.getCellRenderer()){
    @Override
    public boolean isCellEditable(EventObject event) {
        if(event instanceof MouseEvent){
            return false;
        }
        return super.isCellEditable(event);
    }
};

该编辑器阻止使用 MouseEvent 进行编辑。

将该编辑器设置为您的JTree,下一行:tree.setCellEditor(editor);

tree 是你的JTree

【讨论】:

  • 您无法启动 TreeCellEditor,无法调用调用的鼠标事件(2-3 次鼠标点击,如果第一次是关于焦点,则点击 3 次鼠标,节点已选中)
  • 我无法让它工作,第一行的“t”是什么?
  • 是的,它现在可以工作了,但离我需要的还有很长的路要走。我在阻止鼠标时尝试了键绑定,但它不起作用。你能建议任何其他方式吗?如果节点被编辑,我只是​​试图存储节点的先前名称。我使用了 MyTreeModelListener 但它只在名称(UserObject)更改后给我节点......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-26
  • 2013-05-25
  • 2011-08-25
  • 2012-05-13
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
相关资源
最近更新 更多