所以我的程序中有44个按钮,对于我的一个方法,我想重新启用所有这些按钮。按钮很容易命名为btn1,btn2,btn3 ... btn44。有没有办法可以使用for循环来启用所有这些?
我很乐意做这样的事情,但我找不到必要的资源。
for(int i == 0, i < 44, i++){
btn<i>.setEnabled(true);
}
如果没有,我将不得不通过每个按钮
btn1.setEnabled(true);
btn2.setEnabled(true);
...
btn44.setEnabled(true);
我知道这种替代方法并不是那么糟糕,但我的代码中有类似的区域,我正在寻找的技术非常有用。谢谢!
答案 0 :(得分:3)
你应该制作一系列按钮:
Button[] buttons = new Button[44];
for (int i = 0; i < 44; i++) {
// Do stuff with buttons[i]
}
你不能使用它的字符串名称表示来获取变量的值,因为它不能很好地编译;它是可能的,但不仅仅是使用Java,它需要一些奇怪的迂回方式来做它。只需使用数组。
答案 1 :(得分:2)
创建一个列表来存储所有按钮并迭代它。
...
List<Button> buttons = new ArrayList<>();
buttons.add(btn1);
buttons.add(btn2);
...
buttons.add(btn42);
然后将该列表用于群发行动:
void setStatus(boolean enabled) {
for (Button b : buttons ) {
b.setEnabled(enabled);
}
}
答案 2 :(得分:0)
您可以将Buttons
添加到集合中,例如List
(如果您还没有这样做)。然后迭代它们会更容易。
// this list will grow automatically when you add new elements
List<Button> buttons = new ArrayList<>();
// when you create a button in your code, add them to your collection/list
buttons.add(new Button("1"));
buttons.add(new Button("2"));
buttons.add(new Button("3"));
buttons.add(new Button("4"));
buttons.add(new Button("5"));
// etc.
// in Java 8 you can use lambdas to update your buttons like this
buttons.forEach(button -> button.setEnabled(true));
只需确保导入正确版本的List
。
请确保您使用此列表import java.util.List;
而不是窗口工具包中的列表(即不是import java.awt.List;
)