2017-04-06 121 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

这就是工作。感谢您的回答。 –