在Java/Swing中覆盖JMenuItems中快捷键的显示外观

在Java/Swing中覆盖JMenuItems中快捷键的显示外观,java,swing,menuitem,key-bindings,Java,Swing,Menuitem,Key Bindings,我注意到,在一些Mac上,JMenuItem使用单词“space”表示空格键是键绑定。在其他Mac电脑上使用一个符号(看起来像一个短大写U)。我更喜欢“空间”演示,因为它对用户更透明。是否有任何方法可以覆盖LAF以图形方式表示快捷键的方式?您可以子类化BasicMenuItemUI并覆盖paintMenuItem()方法。 在那里你可以画你自己的加速器。我会喜欢一个动画图像作为加速器:) (注意如果您只是想更改助记符或加速器,那么您可以直接使用setAccelerator()或其他设置方法。但我

我注意到,在一些Mac上,JMenuItem使用单词“space”表示空格键是键绑定。在其他Mac电脑上使用一个符号(看起来像一个短大写U)。我更喜欢“空间”演示,因为它对用户更透明。是否有任何方法可以覆盖LAF以图形方式表示快捷键的方式?

您可以子类化
BasicMenuItemUI
并覆盖
paintMenuItem()
方法。 在那里你可以画你自己的加速器。我会喜欢一个动画图像作为加速器:)


注意如果您只是想更改助记符或加速器,那么您可以直接使用
setAccelerator()
或其他设置方法。但我假设情况并非如此。)

您可以将
BasicMenuItemUI
子类化并覆盖
paintMenuItem()
方法。 在那里你可以画你自己的加速器。我会喜欢一个动画图像作为加速器:)


注意如果您只想更改助记符或加速器,那么您可以直接使用
setAccelerator()
或其他设置方法。但我假设情况并非如此。)

这听起来不错!我不需要对Aqua的特殊BasicMenuItemUI进行子类化吗?我想我会放弃这个目标,因为自己绘制菜单项可能无法在Aqua和MacJVM版本之间移植。我会尽我最大的努力在我的电脑上模仿菜单项的外观,然后在旧的/未来的版本中,或者在另一台电脑上,菜单项看起来会不同,我的模仿就会停止。认为这是一个合理的担忧吗?1)是的,如果我的应用程序针对Windows,那么我将不得不覆盖WindowsMenuItemUI。2) 有可能,听起来不错!我不需要对Aqua的特殊BasicMenuItemUI进行子类化吗?我想我会放弃这个目标,因为自己绘制菜单项可能无法在Aqua和MacJVM版本之间移植。我会尽我最大的努力在我的电脑上模仿菜单项的外观,然后在旧的/未来的版本中,或者在另一台电脑上,菜单项看起来会不同,我的模仿就会停止。认为这是一个合理的担忧吗?1)是的,如果我的应用程序针对Windows,那么我将不得不覆盖WindowsMenuItemUI。2) 有可能。