【问题标题】:How ActionListener Knows What Button Was Pushed?ActionListener 如何知道按下了什么按钮?
【发布时间】:2010-12-01 22:51:01
【问题描述】:

我已经编写了两个获取和返回字符串的方法。一个人从英语转换为猪拉丁语,反之亦然。我有两个 JTextField(一个是英语,另一个是 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. 从该方法返回的字符串输出到 Pig Latin JTextField 以供用户查看。

谢谢大家!

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

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));
}

再次感谢所有试图帮助我的人!

【问题讨论】:

标签: java user-interface text button


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-30
    • 2022-08-18
    • 2011-04-11
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多