为什么循环中的add(Component)不起作用?

时间:2016-10-04 09:47:21

标签: java swing

我在方法中有以下代码:

public panel(){
    aHoles = new JTextField(2);
    aBears = new JTextField(2);
    aPenguins = new JTextField(2);
    aHolesLabel = new JLabel("Amount of holes:");

    String[] Vars = {"aHoles", "aBears", "aPenguins", "aHolesLabel"};

    for(int x = 0; x < Vars.length; x++){
        add(Vars[x]);
    }
}

我尝试使用循环将组件添加到JPanel,而不是每次都使用add(),因为它似乎更有效,但是,这给了我以下错误:

The method add(Component) in the type Container is not applicable for the arguments String

我知道这是因为数组中的字符串,问题是当我将这些字符串转换为变量时,例如:

    String[] Vars = {aHoles, aBears, aPenguins, aHolesLabel};

它也给了我一个错误,因为你不能在数组中有变量。

这有可能的解决方法吗?或者我应该手动使用add(Component)而不是循环使用?

1 个答案:

答案 0 :(得分:4)

  

它也给了我一个错误,因为你不能在数组中有变量。

不,它会给您一个错误,因为您无法将Component个对象存储在String的数组中。如果使用适当类型的数组,则可以在其初始值设定项中包含变量:

aHoles = new JTextField(2);
aBears = new JTextField(2);
aPenguins = new JTextField(2);
aHolesLabel = new JLabel("Amount of holes:");
Component[] components = {aHoles, aBears, aPenguins, aHolesLabel};

在初始化字段后声明components 非常重要。