Java:如何在java中禁用按钮?

时间:2015-06-17 14:32:34

标签: java swing button

我想自动禁用几个按钮。 我写了代码:

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
            }
    }

不幸的是,这不起作用。有谁知道怎么做?

2 个答案:

答案 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)