Java Intellij使用另一个类中的数组创建组合框

Java Intellij使用另一个类中的数组创建组合框,java,arrays,swing,intellij-idea,Java,Arrays,Swing,Intellij Idea,我正在使用IntelliJ表单设计器在名为AddAccountForm的类中创建JComboBox。我需要使用来自另一个类(SCMain.Java)的Java数组(InputArray)来创建JComboBox。我通过AddAccountForm的构造函数将这个数组从Main.java传递到AddAccountForm。不幸的是,createUIComponents在AddAccountForm的构造函数运行之前运行,因此我无法访问它。从当前类之外的数组设置JComboBox的正确方法是什么 下

我正在使用IntelliJ表单设计器在名为AddAccountForm的类中创建JComboBox。我需要使用来自另一个类(SCMain.Java)的Java数组(InputArray)来创建JComboBox。我通过AddAccountForm的构造函数将这个数组从Main.java传递到AddAccountForm。不幸的是,createUIComponents在AddAccountForm的构造函数运行之前运行,因此我无法访问它。从当前类之外的数组设置JComboBox的正确方法是什么

下面的错误代码来自AddAccountForm.java,并被截断为相关部分。它返回NPE,因为构造函数尚未加载this.InputArray

private JComboBox comboTest;
private String[] InputArray;

AddAccountForm(SCMain main, Set<String> InputSet) {
this.InputArray = InputSet.toArray(new String[InputSet.size()]);
}

private void createUIComponents() {
// TODO: place custom component creation code here
comboTest = new JComboBox(this.InputArray);
}
private JComboBox组合测试;
私有字符串[]输入阵列;
AddAccountForm(SCMain、Set-InputSet){
this.InputArray=InputSet.toArray(新字符串[InputSet.size()]);
}
私有void createUIComponents(){
//TODO:在此处放置自定义组件创建代码
comboTest=newjcombobox(this.InputArray);
}
从当前类之外的数组设置JComboBox的正确方法是什么

也许最好的方法是创建一个ComboxModel对象,并将其传递到保存JComboBox的类中,让它用它设置组合框的模型。为了简单起见,可以使用对象,如果愿意,只需将数组传递到其构造函数中即可

e、 g

//注意方法和变量名应该以小写字母开头
addAccountForm(SCMain、Set-inputSet){
String[]inputArray=inputSet.toArray(新字符串[0]);
DefaultComboxModel=新的DefaultComboxModel(inputArray);
comboTest.setModel(model);
}

假设
createUIComponents
AddAccountForm
的构造函数(???)之前执行,然后,您应该在
AddAccountForm
构造函数中有一个
comboTest
的实例,由于某种原因,将comboTest设置为构造函数中的InputArray不起作用;它最终成为构造函数不可替换之前的模型/createUIComponents中的任何内容!完美的答案,谢谢。我只是在createUIComponents()中设置了“comboTest=new JComboBox()”,并在构造函数中使用了上面的代码,它成功了。
// note that method and variable names should start with lower-case letters
addAccountForm(SCMain main, Set<String> inputSet) {
    String[] inputArray = inputSet.toArray(new String[0]);
    DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(inputArray);
    comboTest.setModel(model);
}