使用Java中的切换按钮执行操作事件 - (程序无效)

时间:2015-12-14 13:43:34

标签: java arraylist actionevent jtogglebutton

每当按下按钮时,该程序应该将按钮值“ab”保存到ArrayList,但if命令似乎永远不会工作,我尝试删除它并查看它是否有效,它确实并且更新了ArrayList有了新的价值。因此,如果我在J Windows中出现按钮时没有按下按钮,则没有任何反应。

这个程序稍后会将数组保存到一个文件中,所以如果if存在并且我点击了我想要的次数,基本上什么也没有保存,但是如果这个中的if循环去了那么它可以工作

Unit Tests

所以如果这样做了,那么世界将打印出来,aList将在零索引中填充ab:

 public void actionPerformed(ActionEvent a) 
    {
        ArrayList<String> aList = new ArrayList<String>();
            if (a.getActionCommand() == "ab")
                aList.add("ab");
    }

2 个答案:

答案 0 :(得分:0)

首先,aList是局部变量,它将在方法的退出处被删除。

其次:

a.getActionCommand() == "ab"

您必须使用String方法比较equals个对象:

a.getActionCommand().equals("ab")

"ab".equals(a.getActionCommand()) //hack for prevention null reference after a.getActionCommand()

在您的示例中有参考比较,但使用equals您将比较对象,而不是引用。

答案 1 :(得分:0)

您的列表仅存在于方法的范围内。为了在&#34;外部&#34;你应该将它用作实例变量。

例如:

public class A implements ActionListener {
    private final List<String> aList;

    public A() {
        aList = new ArrayList<String>();
    }

    ...

    public void actionPerformed(ActionEvent a) 
    {
        if (a.getActionCommand().equals("ab")) {
            aList.add("ab");
        }
    }
}