0

私のプログラムには、GUI のいくつかのテキストフィールドをクリアする Jbutton (「Clear」という名前) があります。このボタンをエスケープキーに置き換えて、エスケープキーを押すことがそのボタンを押すことと同じになるようにします。(私のプログラムにはその Jbutton は必要ありません)

4

3 に答える 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 に答える