是否可以有没有修饰符的 KeyCodeCombination?还是我需要使用其他东西?

Posted

技术标签:

【中文标题】是否可以有没有修饰符的 KeyCodeCombination?还是我需要使用其他东西?【英文标题】:Is it possible to have a KeyCodeCombination with no modifier? or do I need to use something else? 【发布时间】:2014-03-27 19:13:25 【问题描述】:

我正在尝试将加速器添加到某些场景中,但在某些情况下我想要一个简单的一键加速器。我只熟悉KeyCodeCombination,它似乎不允许我不用修饰符。

奇怪的是,我使用了修饰符 + ANY(例如 SHIFT_ANY),但它似乎并不总是有效(对于我的 F10 加速器,它与 shift 键向上或向下一起工作,但对于我的 F2 加速器它只与 Shift 键 DOWN 一起使用)。

有没有办法用 KeyCodeCombination 制作一个按键加速器?还是我必须使用其他东西?或者谁能​​告诉我为什么我的 F2 组合键与 SHIFT_ANY 不能与 UP 键一起使用?

这是我的加速器代码:

    KeyCodeCombination f2 = new KeyCodeCombination(KeyCode.F2, KeyCombination.SHIFT_ANY);
    KeyCodeCombination f10 = new KeyCodeCombination(KeyCode.F10, KeyCombination.SHIFT_ANY);

    thisScene.getAccelerators().put(f2, new Runnable() 

        @Override
        public void run() 
            buttonCancel.fire();
            System.out.println("F2 pressed");
        
    );
    thisScene.getAccelerators().put(f10, new Runnable() 

        @Override
        public void run() 
            buttonSave.fire();
            System.out.println("F10 pressed");
        
    );

【问题讨论】:

如果你只做new KeyCodeCombination(KeyCode.F2)会发生什么? 【参考方案1】:

有没有办法用 KeyCodeCombination 制作一个按键加速器?

是的。只需使用 KeyCodeCombination 构造函数,不要传递任何修饰符。例如,正如 James_D 的评论:

new KeyCodeCombination(KeyCode.F2)

谁能告诉我为什么我的 F2 组合键与 SHIFT_ANY 不能与 shift 键 UP 一起使用?

不,在我的键盘上,F2+SHIFT_ANY 的加速器会在按下 Shift 键 UP 时触发(桌面、美国、Win 7、Java 8b129)。

【讨论】:

天啊,我发誓我尝试过 (KeyCode.F2) 并且之前遇到了编译错误,但我现在这样做了,它工作正常。至于 SHIFT_ANY 问题,该公司仍在使用 Java 7。但我真的认为您 (jewelsea) 一定是某种巫师,因为您的回答总能在第一次尝试时解决我的问题。

以上是关于是否可以有没有修饰符的 KeyCodeCombination?还是我需要使用其他东西?的主要内容,如果未能解决你的问题,请参考以下文章

Perl /e 修饰符的安全问题

C# 中修饰符的基础结构和行为

java四种权限修饰符的区别

在 Expresso Store 中显示修饰符的总价

如何找到没有显式访问修饰符的方法?

没有访问修饰符的字段,java [重复]