2016-12-07 14 views
1

Enterキーにバインドされた「Send Message」JButtonを取得しようとしていますが、機能していません。JButtonをEnterキーにバインドする方法

インスタンス化:

sendMessage = new JButton("Send Message");    
sendMessage.addActionListener(new sendMessageButtonListener()); 

リスナー:

class sendMessageButtonListener implements ActionListener { 
    public void actionPerformed(ActionEvent event) { 
     if (messageBox.getText().length() < 1) { 

     } else if (messageBox.getText().equals(".clear")) { 
      chatBox.setText("Cleared all messages\n"); 
      messageBox.setText(""); 
     } else { 
      chatBox.append("<" + username + ">: " + messageBox.getText() 
        + "\n"); 
      messageBox.setText(""); 
     } 
     messageBox.requestFocusInWindow(); 
    } 
} 
+0

キーをチェックしたいときにActionListenerを使用する理由は何ですか? KeyListenerを使用する –

+0

[Java:矢印キーでキーストロークを使用する](http://stackoverflow.com/questions/11171021/java-use-keystroke-with-arrow-key) –

答えて

0

あなたがEnterキーに耳を傾けるのKeyListenerを記述する必要があります。 ActionListenerはkeypress-eventsをlistenできません。

ActionListenerにある行をメソッドに抽出し、このメソッドをKeyListenerで呼び出すことをお勧めします。

それは次のようになります。私が見つけ

sendMessage .addKeyListener(new KeyAdapter() { 
      public void keyPressed(KeyEvent e) { 
       if (e.getKeyCode() == 10) { 
        yourFunction(); 
       } 
      } 
     }); 

別の解決策は以下の通りです:あなたはそれが埋め込まれているペイン、上のDefaultButtonとしてあなたのボタンを設定することができます。

pnae.setDefaultButton(sendMessage); 

これにより、Enterを押したときにActionListenerがトリガーされます

関連する問題