gpt4 book ai didi

java - 使用 native 操作系统的默认 KeyMap

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

在 Java 中,通过使用非默认系统外观,我们将拥有不同的键盘映射。

例如我正在使用 Mac OS X 并使用 Substance 外观(非默认系统外观)。结果是我丢失了用于全选文本组件的“元”键在 mac os x 中应该是“meta + a”,但是使用 Substance 我们必须使用“ctrl + a”(还有更多,例如“下一个词”,“上一个词”,“结束行”,“开始行”, ETC)所以我们没有通过使用非默认系统外观(物质外观)来获得 mac os x 的感觉。

有没有办法使用非默认系统外观但使用系统( native )键盘映射?

最佳答案

解决方法

一个不太优雅的解决方案,您可以尝试通过实现 keyPressed 方法添加一个键监听器来覆盖默认的“ctrl + a”行为(请注意,以下示例不会禁止“ctrl + a”,只是添加了对“元 + a"):

@Override
public void keyPressed(final KeyEvent e) {
// Get the default toolkit shortcut mask ("meta" for OSX).
int keyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();

// You could also check modifiers against KeyEvent.META_MASK...
if (e.getModifiers() == keyMask && e.getKeyCode() == KeyEvent.VK_A) {
// Select everything (assumes member of child text component class).
this.selectAll();

// We handled this keystroke, 'a' will be ignored by underlying text component.
e.consume();
}
}

更好的选择是使用 inputMaps(请参阅下面 uudashr 的评论)。


对根本原因的思考

不幸的是,正如类名所暗示的,外观(或 LAF)是外观的组合,即 look,以及“系统行为”,即 < em>感觉。如果你挖掘物质来源,SubstanceLookAndFeel覆盖 BasicLookAndFeel附带 Swing 。它看起来好像在 BasicLookAndFeel 中,违规行为是在 initComponentDefaults 中设置的。您应该能够通过调用 getDefaults() 从 LAF 获取 UIDefaults。

这里的问题是:

  • 您希望更改的“系统行为”与您希望保持不变的外观设置混合在一起。
  • 我也一直无法找到任何简单的方法来将这些默认设置注入(inject) LAF 级别的实质内容...有人对此有其他想法吗?

关于java - 使用 native 操作系统的默认 KeyMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1852433/

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