【问题标题】:How to disable default textfield shortcuts in JTextField如何禁用 JTextField 中的默认文本字段快捷方式
【发布时间】:2009-09-25 10:02:32
【问题描述】:

我有一个自定义文本字段类,它扩展了 Swing 中的 JTextField 类。

我需要找到一种方法来禁用 Ctrl-A(全选)、Ctrl-H(退格)等的默认操作,以便包含文本字段的窗口可以将这些快捷方式映射到它想要的任何内容。

任何帮助将不胜感激。

【问题讨论】:

    标签: java swing jtextfield


    【解决方案1】:

    好的,自己找到答案了:

    在 textfield 类的初始化方法中添加以下内容:

    this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK), "none");
    

    效果是文本字段忽略快捷键并让击键传递给窗口中的快捷键处理程序。

    【讨论】:

      【解决方案2】:

      How to make and remove key bindings 将帮助您实施。

      要删除所有默认键绑定,只需取消引用其父 InputMap。

      jtextField.getInputMap().setParent(null); 
      

      但它删除了所有键绑定,因此您无法键入任何字符。 JTextField 的输入有 3 个父项。所以你会更好地覆盖下面的特定键绑定。

      InputMap inputMap = jtextfield.getInputMap();
      inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.CTRL_DOWN_MASK), "foo");
      inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.META_DOWN_MASK), "foo");
      

      【讨论】:

      • 键绑定教程说:要让组件忽略它通常响应的键,您可以使用特殊操作名称“none”。我不确定这是否与您的“foo”有什么不同... ;)
      【解决方案3】:

      也许你应该处理KeyMap

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-06
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        • 2022-08-14
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        相关资源
        最近更新 更多