java电话本使用Map_java – 使用本机操作系统的默认KeyMap

解决方法

一个不太优雅的解决方案,您可以尝试通过实现keyPressed方法添加一个键监听器来覆盖默认的“ctrl a”行为(请注意,以下示例不禁止“ctrl a”只是添加对“meta 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)是外观即外观和“系统行为”即感觉的组合.如果你在物质源周围挖掘,SubstanceLookAndFeel会覆盖随摆动运输的BasicLookAndFeel.它看起来好像是在BasicLookAndFeel中,在initComponentDefaults中设置了违规行为.您应该能够通过调用getDefaults()从LAF获取UIDefaults.

这里的问题是:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值