我的案例非常具体:
首先,我有一个已定义的字符串数组,其中包含 JComboBox 的默认选项(对于所有用户始终相同):
private static final String[] JOB_TYPE = {options go here};
这些选项加载到 JComboBox 中,如下所示:
private JComboBox jobType = new JComboBox(JOB_TYPE);
然后,还有其他选项可能因用户而异,我也必须将其加载到 JComboBox 内。由于数组具有固定数量的元素,因此我必须找到另一种方法来将除默认选项之外的特定选项添加到 JComboBox 中。所以我所做的是,我创建了一个 LinkedList 并使用 Arrays 中的 asList 方法加载其中数组的默认选项,然后添加因用户而异的其他选项:
private List<String> allJobs = new LinkedList<String>(Arrays.asList(JOB_TYPE));
现在可以使用 toArray() 方法将 allJobs 作为 JCombobox 的参数传递:
private JComboBox jobType = new JComboBox(allJobs.toArray());
现在,我在 allJobs 中拥有了所有默认选项,并且由于它不再是一个数组,我还可以向其中添加将加载的特定选项,如下所示:
for (int j = 0; j < modelJobCustomType.getSize(); j++) {
allJobs.add(((XmlJobCustomElem) modelJobCustomType.getElementAt(j)).getName());
}
现在,这是我的问题:
当我检查 JComboBox 的内容时,我只找到默认选项,而不是特定选项,即使我可以使用调试器看到列表大小已增加并且它也包含特定选项。
我的猜测是,由于 jobType、JOB_TYPE 和 allJobs 是全局变量,因此在编译器到达加载特定选项的代码部分之前,ComboBox 已被填充,这可能就是为什么我只能看到默认选项的原因。
它是否正确?如果是这样,我该如何解决这个问题。请记住,这些全局变量必须保持全局,因为它们也在类的许多其他部分中使用。
感谢您的帮助
斯蒂芬大帝
拉莫斯之舞
慕村225694
相关分类