0

MyFrameクラスの変数に問題があります。MyFrameコンボボックスリスナーで定義された変数の値をクラスに入れたいです。

これが私の状況です。友達の名前が入ったコンボボックスがあります。選択した友人の姓を返さなければならないコンボボックスにリスナーを配置しました。surnameクラスのコマンドにの値を挿入したいのですがMyFrame、いくつか問題があります。一度設定するsurnamefinal(リスナーで使用する必要があるため)、次のようなエラーが発生します。

The final local variable surname cannot be assigned, since it is defined in an enclosing type.

問題は何ですか?ここに私のコードを投稿します:

public class MyFrame extends {
public static void main (String[] args)
    {
        //other 
        String [] names = {"john","al","jack"};
        final String surname=null;
        JLabel nameLbl = new JLabel("surname: " + surname);         
        JComboBox box = new JComboBox(names);    
        JPanel centralPnl = new JPanel();
        centralPnl.add(nameLbl);
        centralPnl.add(box);            
        box.addItemListener(new ItemListener()
        {
            @Override
            public void itemStateChanged(ItemEvent e) {                 
                if (e.getStateChange() == ItemEvent.SELECTED)
                { 
            // Here operations from database 
            //that return friends' surname under the variable name of "result"
                    surname = result;                       
                }
            }
        });
    }
}
4

3 に答える 3

4

final変数を再割り当てしようとしていますが、それが問題です。またfinal、最初に変数を初期化する必要があります。

于 2013-09-11T15:41:58.843 に答える
1

すでに指摘されているコードの問題を超えて、姓を保存する必要があるのか​​ 、それともラベルを更新するためにそれを使用しているだけなのかという疑問があると思います.

データを保存する必要がある場合は、姓の変数をクラス レベルに移動します。

単にラベルを更新している場合は、次のようにします

nameLbl.setText("surname: " + result);
于 2013-09-11T16:00:45.283 に答える