私のプログラムには、GUI のいくつかのテキストフィールドをクリアする Jbutton (「Clear」という名前) があります。このボタンをエスケープキーに置き換えて、エスケープキーを押すことがそのボタンを押すことと同じになるようにします。(私のプログラムにはその Jbutton は必要ありません)
質問する
612 次
3 に答える
3
基本的には、キー バインドを使用して開始します。
さて、個人的には、「クリア」ボタンにバインディングを付けて、使用に2つの選択肢があるようにします...たとえば...
JButton clear = new JButton("Clear");
InputMap im = clear .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap am = clear .getActionMap();
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "clear");
am.put("clear", new ClearFieldsAction());
于 2013-09-12T06:39:59.233 に答える
0
ボタンを削除して、ホール アプリケーションのキー イベントをリッスンする場合は、
この EventQueue を次の場所に登録します。
Toolkit.getDefaultToolkit().getSystemEventQueue().push(INSTANCE_EVENT_QUEUE);
方法
protected void dispatchEvent(AWTEvent e)
処理できる AWTEvent を取得します。お気に入り:
@Override
protected void dispatchEvent(AWTEvent e) {
// handle event and/or
super.dispatchEvent(e);
}
あなたが扱うキーイベント
private void handleAWTEvent(AWTEvent event) {
if (event instanceof KeyEvent) {
KeyEvent keyEvent = (KeyEvent)event;
if (keyEvent.getID() != KeyEvent.KEY_PRESSED) {
return;
}
if (keyEvent.isAltDown() ^ keyEvent.isControlDown() && !keyEvent.isShiftDown()) {
...
于 2013-09-12T06:43:58.673 に答える