gpt4 book ai didi

java - 使用 ListModel 更改 JComboBox 模型。它有隐藏的后果吗?

转载 作者:行者123 更新时间:2023-12-03 00:21:52 25 4
gpt4 key购买 nike

我在不同的地方同时使用 JList 和 JComboBox。两者的内容都是动态变化的。

创建comboBox后,你不能只说comboBox.setModel(String[]),你必须创建一个新模型,然后将其设置到comboBox。

JList 也会发生同样的情况。

我不是创建自己的 Jlist 和 ComboBox 只是为了添加一个名为 .setNewModel(String[]) 的新方法,而是在我的“实用程序”类中创建了一个静态方法,该方法接收 String[] 并返回 ListModel。

所以我可以这样做:

someComboBox.setModel((ComboBoxModel)UtilityClass.convetToListModel(aStringArray));

我对 JList 使用相同的方法。

someList.setModel(UtilityClass.convetToListModel(anotherStringArray));

我的问题是:

将 listModel 转换为 ComboBoxModel 是否会产生一些意想不到的后果?如果是这样,是否可以更改组合框的全部内容,而不必将 ArrayString 转换为模型?

这里是该方法的代码:

public static ListModel convertToListModel(String[] nList)
{
return (new JComboBox(nList).getModel());
}

程序编译并运行良好,但转换总是让我产生疑问,特别是复杂的对象。是的,我知道我可以扩展 JComboBox 和 JList 以添加完成该工作的方法,但需要做很多额外的工作。为什么 ComboBox 和 Jlist 没有更新或修改模型而不是接受简单的字符串数组?

最佳答案

怎么样

someComboBox.setModel((ComboBoxModel)UtilityClass.convetToListModel(aStringArray));

以任何方式更容易编写/更简单/无论如何

someComboBox.setModel(new DefaultComboBoxModel(aStringArray))

您添加的只是 Utility 方法形式的白噪声。加号

  • 该方法的实现简直......疯狂:您创建一个 JComboBox 只是为了访问由该组合内部创建的模型......
  • 您必须利用实现进行类型转换,以便在真正的组合中使用...

不要做这种浪费/不必要的事情,当有一个简单直接的方法可以达到相同的目标时,甚至不要考虑走任何弯路

关于java - 使用 ListModel 更改 JComboBox 模型。它有隐藏的后果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5912823/

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