我想自动禁用几个按钮。 我写了代码:
import javax.swing.*;
public int[] zamrozone = new int[4];
a1 = new JButton("A1");
a2 = new JButton("A2");
a3 = new JButton("A2");
a4 = new JButton("A2");
a5 = new JButton("A2");
private void zamroz()
{
zamrozone[0]=1;
zamrozone[1]=1;
zamrozone[2]=1;
zamrozone[3]=0;
zamrozone[4]=0;
for(int i=0; i<8; i++) //losuje 8 statkow
{
if(zamrozone[i]==1)
"a"+i.setEnabled(false); // here is an error
}
}
不幸的是,这不起作用。有谁知道怎么做?
答案 0 :(得分:1)
您可以将JButton放在一个数组中,然后使用它们的索引:
import javax.swing.*;
final int SIZE = 5;
JButton[] buttons = new JButton[SIZE]
for (int i=0; i<SIZE;i++) {
buttons[i] = new JButton("A" + i)
}
public int[] zamrozone = new int[SIZE];
private void zamroz()
{
zamrozone[0]=1;
zamrozone[1]=1;
zamrozone[2]=1;
zamrozone[3]=0;
zamrozone[4]=0;
for (int i=0; i<SIZE; i++) //losuje SIZE statkow
{
if (zamrozone[i]==1) {
buttons[i].setEnabled(false); // here is an error
}
}
:
}
在代码中使用定义的SIZE而不是常量值,以避免OutOfBounds异常,并使代码更易于更改/维护。
答案 1 :(得分:0)
"a"+i.setEnabled(false);
无法正常工作,因为变量无法正常工作。您正在做的是尝试在整数setEnabled
上调用i
,然后将返回值(不存在为setEnabled
返回void
)添加到字符串文字“a”。
我建议您将按钮存储在数组中,然后在循环内调用buttonArray[i].setEnabled(false)
。