0

アプリケーションで、キーボードの組み合わせで表示される非表示のダイアログを作成します(たとえば、5つのシークエントCtrl+ Shift+i)。
アプリケーション全体でキーボードの組み合わせストロークをグローバルにキャプチャするにはどうすればよいですか?

ありがとう

4

2 に答える 2

2

FullScreenTestこのコンテキストでActionキーバインディングの使用方法を示す例です。KeyEvent.VK_Iと関連するKeyStroke修飾子を置き換えることができます。アクションリスナーは、トリガーされた頻度をカウントできます。

于 2012-04-14T17:51:04.603 に答える
1

DispatcherListener私は: を定義することによってそれを解決しました

class DispatcherListener implements KeyEventDispatcher{
    private int level=0;

    public boolean dispatchKeyEvent(KeyEvent e) {
        if(e.getID() == KeyEvent.KEY_RELEASED){
            if(e.isControlDown() && e.isShiftDown()){
                if(this.level==0 && e.getKeyCode()==KeyEvent.VK_S){
                    level++;
                }else if(this.level==1 && e.getKeyCode()==KeyEvent.VK_H){
                    level++;
                }else if(this.level==2 && e.getKeyCode()==KeyEvent.VK_O){
                    level++;
                }else if(this.level==3 && e.getKeyCode()==KeyEvent.VK_W){
                    level=0;
                    this.showHiddenWindow((JFrame)SwingUtilities.getRoot(e.getComponent()));
                }else{
                    level=0;
                }

                //System.out.println( "level: " +  level );
            }
        }
        return false;
    }

そしてそれをこのように使用しました:

    KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
    manager.addKeyEventDispatcher( new DispatcherListener());

皆さん、ありがとうございました

于 2012-05-03T08:58:19.907 に答える