访问ActionEvent-Class中的变量

时间:2013-10-06 14:42:32

标签: java awt actionlistener

btnButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try {
                    var1 = Float.parseFloat(txtBox.getText());
                }
                catch(NumberFormatException n) {
                }
            }
        });

我无法在此处访问变量'var1',我收到错误:

  

从内部类中访问局部变量var1;需要被宣布为最终

如何在actionPerformed事件中访问变量?声明为final是没有用的,因为无法更改最终变量值。

2 个答案:

答案 0 :(得分:2)

内部类ActionListener包含局部变量的副本。如果变量在本地类中发生变化,则内部类变量可能不同步。

我认为最好将其设为全球(字段):

 private float var1; 

 ...

 btnButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                var1 = Float.parseFloat(txtBox.getText());
            }
            catch(NumberFormatException n) {
            }
        }
    });

答案 1 :(得分:2)

var1 = Float.parseFloat(txtBox.getText());     

将该变量设为member变量。

class outer {
  //declare  variable here 

btnButton.addActionListener(new ActionListener()
    {
   // assign here

}

// you can use it later

JLS # chapter 8

  

使用但未在内部类中声明的任何局部变量,形式参数或异常参数必须声明为final。

     

在内部类的主体之前,必须明确赋值(§16)使用但未在内部类中声明的任何局部变量。

这里的一个例子来自spec: