2017-05-31 7 views
0
JComboBox[] ChooseType = new JComboBox[a]; 
    JRadioButton[] Primary = new JRadioButton[a]; 
    ButtonGroup group = new ButtonGroup(); 
    for (int b = 0; b < a; b++) { 
     ChooseType[b] = new JComboBox(Types); 
     Primary[b] = new JRadioButton(); 
     group.add(Primary[b]); 
     Primary[b].addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       ChooseType[b].setSelectedIndex(8);//Error here 
      } 
     }); 
    } 

最終的または効果的に最終でなければならない私はすでにこれを試してみましたactionPerformed内のJComboBox。 誰かにそれを修正する方法を教えてもらえますか?ローカル変数は、

+1

あなたは正確に同じ問題を持つ多数の重複のいずれかを見ていましたか? – tnw

+1

[ローカル変数スコープに関する問題点]の重複が考えられます。どのようにそれを解決するには?](https://stackoverflow.com/questions/25894509/problems-with-local-variable-scope-how-to-solve-it) – Frakcool

答えて

0

問題はb変数にあります。あなたは一時変数を使用できます:

for (int b = 0; b < a; b++) { 
    int b0 = b; 
    chooseType[b] = new JComboBox(Types); 
    //... 
    chooseType[b0].setSelectedIndex(8);//Error here 

ps:変数の大文字をJavaの規則に合わせて変更しました。単にコードでそれを置くために

+0

それはとても簡単でした。ありがとう –

0

JComboBox[] ChooseType = new JComboBox[a]; 
    JRadioButton[] Primary = new JRadioButton[a]; 
    ButtonGroup group = new ButtonGroup(); 
    for (int b = 0; b < a; b++) { 
     //This is the item that's not final 
     ChooseType[b] = new JComboBox(Types); 
     Primary[b] = new JRadioButton(); 
     group.add(Primary[b]); 
     final JComboBox forListener = ChooseType[b]; 
     Primary[b].addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       forListener.setSelectedIndex(8);//Fixed. 
      } 
     }); 
    }