一次声明multiplie swing元素

时间:2017-05-15 20:32:50

标签: java swing declare

我正在开发一个小型游戏,一个用于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。

4 个答案:

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