ActionListener如何知道什么按钮被推?

时间:2010-12-01 22:51:02

标签: java user-interface text button

我写了两个接受并返回字符串的方法。一个从英语转换为Pig Latin,反之亦然。我有两个JTextFields(一个英文和另一个Piglatin-用于用户输入)。同样,两个JButton:“To English”和“To Pig Latin”。我很困惑如何使用动作侦听器。看起来有可能让一个ActionListener执行你想要的所有“点击”,但是我很困惑它是如何知道你推的是哪个按钮。我本能地想为每个按钮创建两个ActionListener,当单击该按钮时,将执行相应的代码。

有人可以向我展示和/或向我解释这一切是如何运作的吗? 到目前为止我对所有内容的理解总结:

  1. 在JTextField中输入英文单词
  2. 点击“To Pig Latin”按钮
  3. ActionListener以某种方式知道单击“To Pig Latin”按钮并使用JTextField文本作为参数执行toPigLatin()方法。 (假设JTextField输入被自动视为String类型,实际上还没有那么远)。
  4. 从该方法返回的String输出到Pig Latin JTextField以供用户查看。
  5. 谢谢大家!

    我找到了我要找的东西。对不起,我把它发布在错误的论坛上,感谢您将它迁移到它所属的地方......我打算在这里发布! :) 对于任何试图弄清楚如何制作它的人,所以每个按钮在单击时执行某个代码块时使用以下内容:[ActionEvent] .getActionCommand()。equals(“[Button of Name]”) 如果有人有兴趣,这是我的最终解决方案:

    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 :(得分:0)

ActionListeners here有一个很好的教程。对两个按钮使用相同侦听器的最简单方法是在传递给e.getActionCommand()函数的ActionEvent上调用actionPerformed。这将返回一个带有按钮标签的字符串,然后您可以在if语句中使用该字符串来执行相应的操作。