Java — Один ActionListener для нескольких JButtons

#java #swing #jbutton

#java #swing #jbutton

Вопрос:

Я пишу небольшое Java-приложение. У меня есть несколько кнопок JB. Код для каждой кнопки точно такой же, поэтому мне нужен только один ActionListener. Но в этом ActionListener мне нужно вызвать «setText ()» для соответствующей кнопки, которая была нажата. Возможно ли это? Как бы мне этого добиться?

Я попробовал следующее:

 private void btnClicked(java.awt.event.ActionEvent evt) {
  (JButton)evt.setText("Hello");
}
 

Но это не работает — там написано «Не удается найти символ».

Заранее спасибо 😉

Ответ №1:

 (JButton)evt.setText("Hello");
 

У ActionEvent класса нет метода getText() .

Вам необходимо вызвать getSource() метод для доступа к кнопке, затем вы можете вызвать метод getText() кнопки.

Мне всегда нравится делать это долго, чтобы не допускать ошибок:

 JButton button = (JButton)evt.getSource();
button.setText( "Hello" );
 

но короткий путь был бы:

 ((JButton)evt.getSource()).setText("Hello");