Передать событие нажатия кнопки в actionPerformed при нажатии клавиши - PullRequest
1 голос
/ 26 января 2012

Я работаю над назначением Java, которое должно быть выполнено с использованием AWT. Я хочу, чтобы кнопка запускалась нажатием клавиши ввода, когда кнопка находится в фокусе. Я понял, как это сделать в Swing с помощью метода doClick (), но в AWT это не работает. Пока я пытаюсь это:

button.addActionListener(this); // Passes value from a TextBox to actionPerformed() 

button.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if(e.getKeyCode()==KeyEvent.VK_ENTER) {
              actionPerformed(null);
         }
    } 
});

public void actionPerformed (ActionEvent e) {
     try {  
          if (e.getSource() == button) {
               // Stuff I want to happen
          } else if (e.getSource() == anotherButton) {
               // Other Stuff
          } else {     //third button
               // More stuff
          }
     } catch (NumberFormatException nfe) { 
          // Null argument in keyPressed triggers this
          // catches empty string exception from TextBox
     }
 }

Как я уже упоминал в комментариях, нулевой аргумент вызовет улов. Кто-нибудь знает, что это может быть за нажатие кнопки или, возможно, более простой способ сделать это? Спасибо.

Правка - уточнение: actionPerformed () выполняет одно из трех действий с вводом из TextBox в зависимости от того, какая из трех кнопок нажата. Try / catch должен перехватывать пустые исключения строки / формата.

1 Ответ

5 голосов
/ 26 января 2012

У вас всегда может быть метод, называемый чем-то вроде onButtonPress(), который может вызывать ваш actionPerformed, а также keyPressed.

  button.addActionListener(this);

    button.addKeyListener(new KeyAdapter() {
    public void keyPressed(KeyEvent e) {
         if(e.getKeyCode() == KeyEvent.VK_ENTER) {
              onButtonPress();
         }
    } 
 });

public void actionPerformed (ActionEvent e) {
    if (e.getSource() == button){
       onButtonPress();
    } 
 }

private void onButtonPress(){
    // do something
}
...