2017-04-06 55 views
-1

我的觀點是如何使用for循環之外的方法。我不能在外面使用,因爲所有按鈕都是爲循環創建的。每當我創建一個數組按鈕,然後我給按鈕的一些特性,但它們不工作Java如何在循環外部使用for循環中創建的JButton?

private clicks = 0; 
JButton[] test = new JButton[24]; 
for(i=0; i < 24; i++){ 
    test[i] = new JButton("" + i); 
    test[i].setBackground(Color.YELLOW); 
    //and some properties ,action listener 
    if((clicks < 15) && clicks % 5 !=0) { 
     test[].setVisible(False);// i don't know what to write in "[]" 
    } 
    clicks++; 
    else if(clicks%5 == 0) { 
     JOptionPane.showMessageDialog(p1, calculateAverage(anArrayList)); 
    } //calculate average is a method that i created it 
} 
    test[].addActionListener(new ActionListener() {//i dont know what to write in [] 

       public void actionPerformed(ActionEvent e) {  

        if((clicks < 15) && clicks % 5 !=0) { 
      test[].setVisible(False);// i don't know what to write in "[]" 

     } 
     clicks++; 
     else if(clicks%5 == 0) { 
      JOptionPane.showMessageDialog(p1, calculateAverage(anArrayList)); 
     } 
    }  

calculateAverage方法總是給出了相同的輸出。我怎樣才能解決這個問題?當我把if-else代碼放在循環的外面時,我不能使用按鈕。

+0

但你創建,循環外的數組,以便您可以訪問「_I不能之外,因爲所有的按鈕都爲loop_創建使用」。 '試驗[Ⅰ]'。此外,請花時間使用空格鍵並正確縮進代碼。 – csmckelvey

+0

對不起。我試圖展示如何在外面創建按鈕。通常按鈕是在沒有數組的情況下創建的 –

+0

因此,聽起來像你回答了你自己的問題 - 如果你想在你的循環之外使用它們,只需使用你發佈的代碼即可。如果有一些澄清,你可以提供它會很好,因爲我不知道問題在這裏。 – csmckelvey

回答

1

不完全知道你正在嘗試做的,但我會做一個猜測,狀態:

  1. 你不需要一個數組,讓您的按鈕的軌道
  2. 你不需要創建一個新的ActionListener爲每個按鈕
  3. 的的ActionListener應該在創建按鈕

相反,你創建一個普通的ActionListener由所有按鈕共享被添加到該按鈕,在創建按鈕時將偵聽器添加到按鈕。然後,您可以同時將面板添加到面板,因此不需要陣列。代碼的基本結構是這樣的:

ActionListener al = new ActionListener() 
{ 
    @Override 
    public void actionPerformed(ActionEvent e) 
    { 
     JButton button = (JButton)e.getSource(); 

     if (...) 
      button.setVisible(false); 
    } 
}; 

for (...) 
{ 
    JButton button = new JButton(...); 
    button.addActionListener(al); 
    panel.add(button); 
} 
+0

這就是工作。感謝您的回答。 –