【问题标题】:JTree disable/overwrite TransferHandler keyboard actionsJTree 禁用/覆盖 TransferHandler 键盘操作
【发布时间】:2013-01-02 09:05:41
【问题描述】:

我需要摆脱用于 JTree 的 TransferHandler 类的标准键盘操作处理程序。 JTree 实现了控制节点是否可以删除的访问级别机制。通过使用键盘组合(如 shift-delete)忽略此行为,允许每个用户从 JTree 中删除任何节点。

基本上我需要 TransferHandler 来提供移动和排序节点 (DnD) 的便捷方式。就是这样。

提前致谢。

【问题讨论】:

    标签: java swing jtree drag-and-drop key-events


    【解决方案1】:

    您可以通过从ActionMap 中删除键默认绑定来删除它们

    类似这样的:

    ActionMap actionMap = tree.getActionMap();
    actionMap.remove("cut");
    actionMap.getParent().remove("cut");
    actionMap.remove("copy");
    actionMap.getParent().remove("copy");
    actionMap.remove("paste");
    actionMap.getParent().remove("paste");
    

    【讨论】:

      【解决方案2】:

      编辑:我来晚了,上面已经建议了 lbalazscs。

      你可以试试这样的:

      JTree tree = new JTree();
      tree.setDragEnabled(true);
      tree.setDropMode(DropMode.ON_OR_INSERT);
      tree.setTransferHandler(new YourTreeTransferHandler());
      //......
      Object key = TransferHandler.getCutAction().getValue(Action.NAME);
      System.out.println(key);
      tree.getActionMap().put(key, new AbstractAction() {
        @Override public void actionPerformed(ActionEvent e) {
          System.out.println("dummy");
        }
      });
      

      【讨论】:

      • 尽管已经提出了解决方案,但我更喜欢这种方式。非常感谢!
      猜你喜欢
      • 1970-01-01
      • 2020-09-10
      • 2019-01-26
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-25
      相关资源
      最近更新 更多