gpt4 book ai didi

java - 更新链表

转载 作者:行者123 更新时间:2023-11-30 05:28:53 25 4
gpt4 key购买 nike

我的案例非常具体:

首先,我有一个已定义的字符串数组,其中包含 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 已被填充,这可能就是为什么我只能看到默认选项。

这是正确的吗?如果是这样,我该如何解决这个问题。请记住,这些全局变量必须保持全局,因为它们也在类的许多其他部分中使用。

感谢您的帮助

最佳答案

组合框被赋予从列表派生的数组。之后添加到列表中不会改变数组值(数组是固定长度值),

还有一个JComboBoxVector参数,允许添加(与数组相反)。

但是最好的是 JComboBoxComboBoxModel<E>最高级别的参数。有一个默认实现 DefaultComboBoxModel :

DefaultComboBoxModel<String> model = new DefaultComboBoxModel<>(JOB_TYPE);
model.addElement("custom0");
model.addElement("custom1");
combobox = new JComboBox(model);

关于java - 更新链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57976817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com