gpt4 book ai didi

java - JTextComponent 键盘映射

转载 作者:搜寻专家 更新时间:2023-11-01 01:36:25 26 4
gpt4 key购买 nike

我需要创建一个从 JTextComponent(实际上是从 JTextPane)派生的类,其中至少有一个 default 键映射是变了。也就是说,在我的特殊 JTextPane 中,我希望“>”键击执行一个操作,而不是将该字符添加到文本 Pane ,因为默认情况下所有可打印的键入字符都会被处理。

为了打败正常行为,有以下 API:

  • JTextComponent.getKeymap()
  • Keymap.addActionForKeyStroke()
  • JTextComponent.setKeymap()

但是,我发现虽然这些方法不是静态的,但它们确实会影响我的应用程序中所有 JTextComponent 使用的键映射。没有简单的机制可以克隆 Keymap,这可能会解决问题,或者我遗漏了什么。

我所追求的是一种为我的 JTextPane 类而不是所有 JTextComponent 派生类更改键盘映射的方法。

或者我应该寻找其他地方?

最佳答案

恕我直言,a有点难理解,但答案在这里: Using the Swing Text Package by Tim Prinzing

文章的作者 Tim Prinzing,根据源代码,我相信他也是 JTextComponent 的作者,他提供了一个示例,我将对其进行评论:

      JTextField field = new JTextField();
// get the keymap which will be the static default "look and feel" keymap
Keymap laf = field.getKeymap();
// create a new keymap whose parent is the look and feel keymap
Keymap myMap = JTextComponent.addKeymap(null, laf);
// at this point, add keystrokes you want to map to myMap
myMap.addActionForKeyStroke(getKeyStroke(VK_PERIOD, SHIFT_DOWN_MASK), myAction);
// make this the keymap for this component only. Will "include" the default keymap
field.setKeymap(myMap);

我的错误是将我的击键添加到 getKeymap 返回的键映射中,而不是让它给 child 。恕我直言,名称 addKeymap() 令人困惑。它可能应该是 createKeymap()。

关于java - JTextComponent 键盘映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com