【问题标题】:Initializing a JComboBox[] array初始化 JComboBox[] 数组
【发布时间】:2013-08-04 08:35:00
【问题描述】:

对不起,我是java的菜鸟,但是我如何初始化变量petList而不将其设置为null?

for (int x = 0;x<= buttonPressed;x++){

    println("adding box");
    String[] petStrings = { "Withdraw", "Deposit", "Blah", };

    //Create the combo box, select item at index 4.
    @SuppressWarnings({ "rawtypes", "unchecked" })
    JComboBox petList[] = null;// = new JComboBox(petStrings);
    petList[x] = new JComboBox(petStrings);
    petList[x].setSelectedIndex(1);
    petList[x].setBounds(119, (buttonPressed *20)+15, 261, 23);

    contentPane.add(petList[x]);        
}

【问题讨论】:

  • 先创建数组本身:JComboBox petList[] = new JComboBox[sizeHere];
  • 不相关:永远不要手动调整组件的大小/定位 - 这是 LayoutManager 的专属任务。
  • 只是约定的一点,在声明数组时,最好将大括号放在声明的类型旁边而不是标识符之后。所以JComboBox petList[]; 将是JComboBox[] petList;。其他人更容易这样阅读。 Donald Knuth 引用了相关的话; “让我们专注于向人类解释我们希望计算机做什么”

标签: java arrays swing jcombobox


【解决方案1】:

创建数组时必须考虑的三件事:

  1. 声明:JComboBox [] petList;
  2. 初始化数组:petList = new JComboBox[someSize];
  3. 分配:petList[i] = new JComboBox();

因此,将petList 放在for-loop 之外(也许将其定义为实例变量会更好):

public class YourClass{
//instance variables 
private JComboBox[] petList; // you just declared an array of petList
private static final int PET_SIZE = 4;// assuming
//Constructor
public YourClass(){
 petList = new JComboBox[PET_SIZE];  // here you initialed it
 for(int i = 0 ; i < petList.length; i++){
  //.......
  petList[i] = new JComboBox(); // here you assigned each index to avoid `NullPointerException`
 //........
 }
}}

注意:这不是编译代码,只会演示您解决问题的方法。

【讨论】:

  • 哈哈,我太笨了,我不知道如何在 cmets 中发布代码。另外..这有效,但我认为我的初始目标编码错误。我希望它根据 int (buttonPressed) 的大小创建多个框。但无论如何它只创建了一个盒子。
  • 是的,我明白了,这是另一个主题,因为您的问题中没有提到它,请尝试阅读此行:How would I dynamically add swing component to GUI on click?
  • 欢迎加入,如果您有时间,请尝试阅读about StackOverFlow,了解如何投票、特别接受答案和其他规则,因为这不会是最后一次提问&回答问题,祝你好运 :)
【解决方案2】:

你需要循环。这将导致其他错误,例如边界重叠,但这应该是要点:

JComboBox[] petList = new JComboBox[petStrings.length];
for(int i=0; i<petStrings.length; i++){
    petList[i]=new JComboBox(petStrings[i]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多