【问题标题】:ActionListener not doing anything [duplicate]ActionListener 没有做任何事情[重复]
【发布时间】:2014-03-25 19:53:50
【问题描述】:

我是 Java 新手,所以请多多包涵。 我试图获得一个按钮来打开一个名为 AboutFrame 的新框架,但每当我按下该按钮时,什么都没有发生。

我先实现ActionListener:

class MainFrame extends JFrame implements ActionListener {

然后我设置按钮(在通常的 super("blabla");... 之后)

JButton info = new JButton("About Failsafe");
    info.addActionListener(this);

然后:

public void actionPerformed(ActionEvent event) {
String command = event.getSource().toString();
    if (command == "info") {
        AboutFrame abt = new AboutFrame();
    }
}

那么我在这里做错了什么?我看不到任何错误..

【问题讨论】:

  • 添加这个... abt.setVisible(True)
  • 即使您使用equals,您的条件也永远不会被评估为真。您是否尝试打印 event.getSource().toString(); 返回的内容?只需使用if(info == event.getSource())

标签: java swing actionlistener string-comparison


【解决方案1】:

您没有正确获取命令文本:

JButton button = (JButton) event.getSource();
String command = button.getText();

if (command.equals("About Failsafe"))
{
  AboutFrame abt = new AboutFrame();
  abt.setVisible(true);
}

或者,如果您的 JButton info; 声明是一个实例变量(而不是本地变量),您可以进行 if-check:

if (event.getSource() == info)

【讨论】:

  • 第一个解决方案奏效了!非常感谢:)
【解决方案2】:

试试:

if (event.getSource()==info) {}

而不是if (command=="info") {}。

【讨论】:

  • if (command.equals("info")) 这将如何工作? "info" 是变量名,不是 JButton 的命令文本。
  • 你是对的。我的错。对不起。
猜你喜欢
  • 1970-01-01
  • 2019-03-10
  • 2013-01-11
  • 1970-01-01
  • 2019-04-10
  • 2012-09-07
  • 2016-10-02
  • 2013-09-28
  • 1970-01-01
相关资源
最近更新 更多