如何在KeyBoard上按某些键时触发JavaFX应用程序(舞台)中的事件?

问题描述 投票:-3回答:1

我正在尝试在我正在处理的应用程序上设置后门程序。

我想在用户按下“CTRL + ALT + F12”时加载一个新窗口。这是我到目前为止尝试过的,虽然它非常糟糕。

//packages
import java.awt.EventQueue;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;

//...
private void setupBackPass(){
        HashMap<KeyStroke, Action> actionMap = new HashMap<KeyStroke, Action>();
        KeyStroke key1 = KeyStroke.getKeyStroke(KeyEvent.ALT, KeyEvent.CTRL_DOWN_MASK);
        actionMap.put(key1, new AbstractAction("action1") {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.out.println("Ctrl-ALT pressed: " +e);
            }
        });


        KeyboardFocusManager kfm = KeyboardFocusManager.getCurrentKeyboardFocusManager();
        kfm.addKeyEventDispatcher(new KeyEventDispatcher() {
            @Override
            public boolean dispatchKeyEvent(KeyEvent e) {
                KeyStroke keyStroke = KeyStroke.getKeyStrokeForEvent(e);
                if(actionMap.containsKey(keyStroke)){
                final Action a = actionMap.get(keyStroke);
                final ActionEvent ae = new ActionEvent(e.getSource(), e.getID(), null);
                EventQueue.invokeLater(new Runnable() {
                @Override
                public void run() {

                }
                });

                return false;
                }
            });
        });


    }


我不知道该怎么做但我希望如果按下键,那么应该打开一个超级管理员窗口。

javafx keystroke
1个回答
0
投票

从您发布的代码中,看起来您使用的是Swing而不是JavaFX。它看起来像你正在尝试使用Key Bindings。如该链接中所述,您需要修改输入映射和操作映射。此外,您不使用现有的动作地图创建动作地图。同样,我在提供链接的页面中对此进行了解释。

© www.soinside.com 2019 - 2024. All rights reserved.