2017-03-17 124 views
-2

我正在学校项目中工作,我正在使用NetBeans IDE。在这个项目中,我的程序有很多使用相同代码的按钮,但名称不同。不是每次都重新输入变量名称,有没有办法调用按钮本身的名称?如何调用Jbutton的变量名称

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(真);

为什么需要更少的时间?

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

+3

好像现在要做的正确的最好的办法是找到一个新的类有一位新老师。 – csmckelvey

+0

你做了什么研究。老师不知道如何解决这个问题应该让人担心,因为通过基本培训对Java的基本理解解决了所有问题的答案。 – Underbalanced

+0

雷电塔基,我们是好人:)。无论如何,这只是你写错了方式。然而,编辑这个问题现在一切都很有意义。希望提供的答案能帮助你。祝你进入java的旅程顺利。 :)。 –

回答

2

将在阵列的按钮:这样

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

然后循环通过它们:

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

然后初始化它们

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); 
    } 
} 
0

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

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);