【发布时间】:2020-10-26 11:56:43
【问题描述】:
我的应用程序使用 Java 8,在 MacOS 上,许多操作都定义了可以正常工作的快捷方式,例如定义为使用 COMMAND-1 的快捷方式
public final class AutoCorrectAction
extends CorrecterAction
{
private static final String ACTION_NAME = "autocorrect";
public AutoCorrectAction(final int paneIndex)
{
super(ACTION_NAME, TextLabel.MENU_AUTOCORRECT.getMsg(), paneIndex);
if (paneIndex == TagDisplayer.INDEX_NONE)
{
putValue(ACCELERATOR_KEY,(KeyStroke.getKeyStroke(KeyEvent.VK_1,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())));
}
this.putValue(Action.SMALL_ICON, JaikozIcon.LOCAL_AUTOCORRECT.getIconSmall());
this.putValue(JaikozAction.LARGE_ICON, JaikozIcon.LOCAL_AUTOCORRECT.getIconLarge());
this.putValue(Action.SHORT_DESCRIPTION,TextLabel.MENU_AUTOCORRECTTOOLTIP.getMsg());
}
public final void actionPerformed(final ActionEvent e)
{
start.logger.entering(this.getClass().getName(), JaikozLogFormatter.ACTION_PERFORMED);
this.performTask(new AutoCorrecter(start, isSelectedOnly(e), isUseRowSelection));
start.logger.exiting(this.getClass().getName(), JaikozLogFormatter.ACTION_PERFORMED);
}
}
我的最新版本的软件现在使用 Java 11,现在当我按下 COMMAND-1 时,它会最小化窗口并在 Finder 中显示,谷歌搜索确定这是标准的 mac 快捷方式 - https://support.apple.com/en-us/HT201236
Command-1:以图标形式查看 Finder 窗口中的项目。
所以我的问题是正确的 mac 行为是什么,我的应用程序中的快捷方式是否应该覆盖 MacOS 快捷方式,即这是 Java 11 中引入的错误,还是以前的行为有错误,现在已修复。
令人困惑的是,我还有一个使用 Command-2 以相同方式定义的操作,这也是标准的 MacOS 快捷方式
Command-2:以列表形式查看 Finder 窗口中的项目。
public final class CreateAcousticIdAction
extends CorrecterAction
{
private static final String ACTION_NAME = "createmusicipacousticid";
public CreateAcousticIdAction(final int paneIndex)
{
super(CreateAcousticIdAction.ACTION_NAME, TextLabel.MENU_CREATE_MUSICIP_ACOUSTIC_ID.getMsg(), paneIndex);
this.putValue(Action.SMALL_ICON, JaikozIcon.CREATE_MUSICIP_PUID.getIconSmall());
this.putValue(JaikozAction.LARGE_ICON, JaikozIcon.CREATE_MUSICIP_PUID.getIconLarge());
this.putValue(Action.SHORT_DESCRIPTION, TextLabel.MENU_CREATE_MUSICIP_ACOUSTIC_IDTOOLTIP.getMsg());
putValue(ACCELERATOR_KEY,(KeyStroke.getKeyStroke(KeyEvent.VK_2,
Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())));
}
public final void actionPerformed(final ActionEvent e)
{
this.performTask(new CreateAcoustId(start, isSelectedOnly(e), isUseRowSelection), JaikozThreadGroup.THREAD_CREATE_ACOUSTICID);
}
}
但我的快捷方式仍然有效,并且没有被 MacOS 快捷方式覆盖!
更新 我已按要求制作了电影 - http://www.jthink.net/jaikoz/scratch/cmd1issue.mov
我现在注意到的是,当我按下 Cmd-1 时,它会最小化窗口,但它也会运行自动更正,所以它会同时做这两件事。
【问题讨论】:
-
你能做一个最小的可重现的例子吗?对我来说,Command+1 在 osx 上没有做任何事情,firefox 使用它来选择正在显示的选项卡。
-
正如 matt 评论的那样,请制作一个最小的示例应用程序,显示至少 2 或 3 个被覆盖的快捷方式。
-
我使用 CMD + 1 激活按钮没有问题,所以我无法重现您所看到的内容。在 os x 上使用 jdk 11 或 14。
-
鉴于@matt 观察到 jdk11 或 14 没有问题,以及您原来的 cmd-1“最小化窗口并在 Finder 中显示”,您能否发布有关此行为的视频?如果是这样,请务必从 Apple 图标到菜单,同时捕捉视频中屏幕的左上角区域。
-
@Glenn,上传到服务器并添加了链接。