如何从actionListener内部另一个actionListener访问变量?

时间:2015-03-29 04:50:37

标签: java scope jbutton actionlistener jcombobox

private int var = 0;

test(){
    ActionListener actionListener = new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            String selection = (String) items.getSelectedItem();

            for (int i = 0; i < itms.length; i++) {
                if (selection == itms[i]) {
                    var = 10 + i;

                    System.out.println(var); // prints the desired value
                }
            }
        }
    };

    System.out.println(var); // prints 0 but why not desired value???
}

此actionListener用于组合框。我想获取组合框中所选项的值,并将其提供给另一个actionListener,它将根据选择的JButton从原始actionListener向var追加一个新值。如何从此actionListener中获取var的值,并将其用于同一构造函数中的另一个actionListener中?这甚至可能吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您的actionPerformed()方法将在事件发生时执行,但在actionPerformed()之外的print语句不是这样。

所以这句话

System.out.println(var); // prints 0 but why not desired value???
每次创建test类的对象时都会执行

(根据Java命名约定,最好将其命名为 Test 类),因为print语句已写入在构造函数内部。相反,只要事件发生,actionPerformed方法中的print语句就会被执行并打印出正确的值,即你所需的“期望值”。

相关问题