java - 需要帮助在 java 中制作正确的 Action 监听器

标签 java

好的,每个文本字段都是 Action 监听器。我做了很多测试,发现添加 Action 监听器不是问题。问题出在下面的代码中,因为对于前四个文本字段,显示了 hello 窗口,但没有显示正常。但在底部,会弹出 ok 窗口和 hello 窗口。我做错了什么?

public class handler implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        if (event.getSource() == text)
        {
            JOptionPane.showMessageDialog(null, "ok");
        }
        else if (event.getSource() == text1)
        {
            JOptionPane.showMessageDialog(null, "ok");
        }
        else if (event.getSource() == text2)
        {
            JOptionPane.showMessageDialog(null, "ok");
        }
        else if (event.getSource() == text3)
        {
            JOptionPane.showMessageDialog(null, "ok");
        }
        else if (event.getSource() == text4)
        {
            JOptionPane.showMessageDialog(null, "ok");
        }
        JOptionPane.showMessageDialog(null, "hello");
    }
}

最佳答案

您遇到的问题是您正在进行浅层比较:

event.getSource() == textX

因此,您永远不会满足 if-else 中的任何条件,也永远不会看到 text1 ... text4 的“ok”对话框。

看起来您正在尝试对多个文本字段使用单个 ActionListener,然后根据事件源(发生事件的文本字段)区分行为。

您可能需要考虑为每个文本字段创建一个 ActionListener 实现,而不是这样做。

我通常将 ActionListener 创建为匿名类,这样我就可以在事件发生时自定义特定字段想要发生的情况,但我不必在应用程序中增加类。

关于java - 需要帮助在 java 中制作正确的 Action 监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12701102/

相关文章:

java - 无法下载 spring-web 和 spring-webmvc 依赖项

java - 如何导航到上一个 Activity 的上一个 fragment

java - 将 jar 文件 URI 转换为文件

java - 对 Google 计算引擎 API 的 REST 调用

java - 扩展 JMenu 以给它一个复选框?

java - 编译错误,不懂

java - Google App Engine 开发服务器如何对数据存储进行 stub ?

java - 为什么Java中的许多Collection类都扩展抽象类并实现接口(interface)?

java - 如何在java中的i18n下通过本地化获取xml文件..?

java - 测试 Spring @MVC 注解