我正在开发一个小型游戏,一个用于IT类的Java项目。
添加/声明( ??? )Java swing元素我使用过这种写法:
JLabel A = new JLabel();
JLabel B = new JLabel();
//More JLabels...
JButton A = new JButton();
JButton B = new JButton();
//More JButtons...
代码不会变得更长,而且(更多)令人困惑,我继续这种写作:
JLabel A = new JLabel(), B = new JLabel()/*More JLabels...*/;
JButton A = new JButton(), B = new JButton()/*More JButton...*/;
/*Generaly more comments everywhere over the code for my teacher (and me)
*and more for a better overview.
*/
我的问题是:
是否有更短的方法一次添加/声明( ??? )多个Java swing元素?
//like this
JLabel A, B, C, D, E, F = new JLabel();
//or
new JLabel[A, B, C, D, E, F];//PLS don't ask what I'm doing in this line xD
或者在Stackoverflow中是否已经存在我未找到的半个问题?
修改
这个问题可能已经有了答案:初始化多个 Java 6答案中相同值的变量
这里是问题的Link
您的问题已被确定为另一个问题的可能副本 题。如果那里的答案没有解决您的问题,请 编辑以详细解释您的问题中唯一的部分。
不适用于Jbuttons和JLabels。
答案 0 :(得分:5)
如果您使用的是Java 8,则可以使用:
List<String> labels = ....;
Stream<Button> stream = labels.stream().map(Button::new);
List<Button> buttons = stream.collect(Collectors.toList());
从书Java se 8 for the really impatient
然后你可以使用:
JPanel p = new JPanel();
buttons.forEach((t) -> p.add(t));//add your buttons to your panel
答案 1 :(得分:2)
这取决于,如果您的所有对象都是JLabel
或相同的对象类型,您可以尝试:
JLabel
之类的数组:
JLabel[] labels = new JLabel[size of your array];
然后在for
循环内访问它:
for (int i = 0; i < labels.length; i++) {
labels[i] = new JLabel("I'm label: " + i);
}
List
个标签:
ArrayList <JLabel> labelsList = new ArrayList <JLabel>();
然后你可以:
for (int i = 0; i < 10; i++) { //I take 10 as an arbitrary number just to do it in a loop, it could be inside a loop or not
labelsList.add(new JLabel("I'm label-list: " + i));
}
之后你可以添加它们:
pane.add(labels[i]); //Array
pane.add(labelsList.get(i)); //List
上面的代码应该在循环内部或更改i
以获取要添加的元素的显式索引。
答案 2 :(得分:1)
如果你想在一个程序中多次做同样的事情(或类似的事情),答案就是使用某种循环。在这里,你可以声明一个JButton元素的数组(或List),并循环它以初始化它的元素:
final int NUM_BUTTONS = 6;
JButton[] buttons = new JButton[NUM_BUTTONS];
for (int i = 0; i < NUM_BUTTONS; i++) {
buttons[i] = new JButton();
}
// refer to A as buttons[0], C as buttons[2], etc
答案 3 :(得分:-3)
在声明变量后,您可以使变量彼此相等。
String one, two, three;
one = two = three = "";
所以,我认为你可以做到
JLabel A,B,C,D,E,F;
A = B = C = D = E = F = new JLabel();