如何调用Jbutton的变量名

时间:2017-03-17 16:31:01

标签: java swing

我正在开展一个学校项目,并且我正在使用netbeans IDE。在这个项目中,我的程序有很多按钮使用相同的代码,但名称不同。而不是每次都重新键入变量名称,有没有办法调用按钮本身的名称?

sa1++;
    if(sa1 % 2 == 0) {
        A1.setEnabled(true);
        A1.setBackground(Color.green);
        A1.setOpaque(false);
    }
    else {
        A1.setEnabled(false);
        A1.setBackground(Color.red);
        A1.setOpaque(true);
    }

请注意,按钮按字母顺序排列最多为5.而不是重新输入,有没有办法让它像:

[Jbutton变量名] .setEnabled(true);

这样可以节省时间吗?

我的老师对此也感到好奇,这也有助于未来的项目。  编辑:老师知道怎么做,我的意思是他想看看我怎么弄清楚。你们有点苛刻,不是吗?

3 个答案:

答案 0 :(得分:2)

将按钮放在一个数组中:

//change the 5 to however many buttons you want to have
JButton[] buttons = new JButton[5];

然后初始化它们:

buttons[0] = new JButton();
//add any other initialization, like event handlers

然后像这样循环遍历:

for (int i = 0; i < buttons.length; i++) {
    //replace the line below with whatever you want to do with each button
    performSomeAction(buttons[i]);
}

将此与下面的另一个好答案结合起来,您还可以创建一种方法将您想要做的所有内容封装到按钮中:

private void performSomeAction(JButton button) {
    if(sa1 % 2 == 0) {
        button.setEnabled(true);
        button.setBackground(Color.green);
        button.setOpaque(false);
    }
    else {
        button.setEnabled(false);
        button.setBackground(Color.red);
        button.setOpaque(true);
    }
}

答案 1 :(得分:1)

  

在这个项目中我的程序有很多使用相同代码的按钮,   但名字不同。而不是重新键入变量名称   每一次,有没有办法调用按钮本身的名称?

将其重构为方法。

示例:

public void TestMethod(JButton button)
    if(sa1 % 2 == 0) {
        button.setEnabled(true);
        button.setBackground(Color.green);
        button.setOpaque(false);
    }
    else {
        button.setEnabled(false);
        button.setBackground(Color.red);
        button.setOpaque(true);
    }
}

然后,只需每次调用​​方法并传入适当的按钮引用。

示例:

TestMethod(A1);
TestMethod(A2);
TestMethod(A3);
TestMethod(A4);

答案 2 :(得分:0)

将它们添加到List并执行foreach循环。