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

ここで変数 'var1' にアクセスできません。次のエラーが表示されます。

ローカル変数 var1 は、内部クラス内からアクセスされます。final を宣言する必要があります

actionPerformed イベントで変数にアクセスするにはどうすればよいですか? final 変数の値を変更することはできないため、final として宣言することは役に立ちません。

4

2 に答える 2

2

内部クラスActionListenerは、ローカル変数のコピーを保持します。変数がローカル クラスで変更された場合、内部クラスの変数が同期されていない可能性があります。

グローバル(フィールド)にする方が良いと思います:

 private float var1; 

 ...

 btnButton.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            try {
                var1 = Float.parseFloat(txtBox.getText());
            }
            catch(NumberFormatException n) {
            }
        }
    });
于 2013-10-06T14:43:56.723 に答える