に呼ばれては、こちらをご覧How to Use Key Bindingsを持っています。
keylistenerの代替品です。
ここには少し例があります。フォーカスのあるButtonがあり、KeyEvent(F2)を処理します。
F2キーを押したキーバインディングで、System.out
の印刷を実行したButtonClickで処理されました。
public class Example {
static public void main(String[] s) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
JFrame frame = new JFrame();
frame.getContentPane().setLayout(new BorderLayout());
frame.setBounds(50, 50, 600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton button = new JButton(new AbstractAction("MyButton") {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button Clicked");
}
});
frame.getContentPane().add(button);
frame.getRootPane().setDefaultButton(button);
KeyStroke f2 = KeyStroke.getKeyStroke("F2");
frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(f2, "clickButton");
frame.getRootPane().getActionMap().put("clickButton", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
button.doClick();
}
});
frame.setVisible(true);
// the Button has the focus
button.requestFocus();
// generate a KeyEvent 'F2'
KeyboardFocusManager.getCurrentKeyboardFocusManager().dispatchKeyEvent(new KeyEvent(frame, KeyEvent.KEY_PRESSED, 0, f2.getModifiers(), f2.getKeyCode(), f2.getKeyChar()));
}
});
}
}
お返事いただきありがとうございます...しかし、getInputMap()メソッドとput()メソッドが何をしているのか説明してください。どんな助けでも大歓迎です – Shantanu
+1、SwingはKey Bindingsを使用するように設計されています。チュートリアルでは、これらの方法について説明します。チュートリアルの説明を混乱させることがわからない場合は、追加のヘルプを提供することはできません。おそらく、私の小さな[Key Bindings](http://tips4java.wordpress.com/2008/10/10/key-bindings/)ユーティリティは、使用するInputMapの理解を深めるのに役立ちます。 – camickr