Как ActionListener знает, какая кнопка была нажата? - PullRequest
0 голосов
/ 02 декабря 2010

Я написал два метода, которые принимают и возвращают строку.Один переводит с английского на латинский свиной и наоборот.У меня есть два JTextFields (один английский и другой Piglatin- для ввода пользователя).Аналогично, два JButton: «To English» и «To Pig Latin».Я запутался, как использовать слушателей действия.Похоже, можно просто заставить один ActionListener выполнять все, что вы хотите, «по нажатию», однако я не совсем понимаю, откуда он знает, какую кнопку вы нажали.Я инстинктивно хочу создать два ActionListener для каждой кнопки, чтобы при нажатии кнопки выполнялся соответствующий код.

Может кто-нибудь показать и / или объяснить мне, как все это работает?Краткое описание того, как я все понимаю до сих пор:

  1. Введите английские слова в JTextField
  2. Нажмите кнопку «To Pig Latin»
  3. ActionListener каким-то образом знает «To Pig Latin»"нажата кнопка и выполняет метод toPigLatin () с текстом JTextField в качестве параметра.(Предполагая, что входные данные JTextField автоматически считаются типом String, на самом деле это еще далеко).
  4. Строка, возвращаемая этим методом, выводится в JTextField Pig Latin для просмотра пользователем.

Спасибо всем!

Я нашел то, что искал.Извините, я разместил сообщение не на том форуме, и спасибо, что перенесли его сюда, куда он принадлежит ... Я хотел опубликовать это здесь!:) Для тех, кто пытается выяснить, как сделать так, чтобы каждая кнопка при нажатии выполняла определенный блок кода, используйте следующее: [ActionEvent] .getActionCommand (). Equals ("[Имя кнопки]") Вот мое окончательное решение, если кому-то интересно:

public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("To Pig Latin")){
        String english = English.getText();
        PigLatin.setText(englishToPigLatin(english));
    }
    if (e.getActionCommand().equals("To English")){
        String piglatin = PigLatin.getText();
        English.setText(pigLatinToEnglish(piglatin));
    }
    String piggyCount = Integer.toString(pigCount);
    countP.setText("Number of Successful Word Translations:   English: "+piggyCount+"   ");
    String englishyCount = Integer.toString(englishCount);
    countE.setText(String.format("Pig-Latin: "+englishyCount));
}

Еще раз спасибо всем, кто пытался мне помочь!

1 Ответ

0 голосов
/ 02 декабря 2010

Есть хорошее руководство по ActionListeners здесь . Самый простой способ использовать один и тот же слушатель для двух кнопок - это вызвать e.getActionCommand() на ActionEvent, переданном функции actionPerformed. Это вернет строку с меткой кнопки, которую затем вы можете использовать в операторе if для выполнения соответствующего действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...