gpt4 book ai didi

java - Swing ComboBox,选择 "none of the below"

转载 作者:行者123 更新时间:2023-11-30 05:14:21 26 4
gpt4 key购买 nike

我有一个完全正常的ArrayList<MyObject>我需要编辑并从中选择一个对象。

在应用程序窗口中,我有一个 JComboBox从列表中选择适当的选项。我正在为这些对象编写一个编辑器对话框,其中只包含 JList这些对象和编辑器字段。这很容易做到;我只要 ListModel某种形式的实现。坚持ArrayList在中,通过常用字段访问它。 GUI 列表中的内容是实际列表中内容的 1:1 表示。简单。

但是主应用程序窗口中的组合框让我有点头疼,因为我需要一个特殊的值。理想情况下,列表中的第一项应该是“(无)”,并返回 null .

我只需要写一些奇怪的ComboBoxModel实现这个,或者有一个更简单的,已经实现的方法来做到这一点?我绝对可以想象这种情况以前曾出现过。

最佳答案

实现您自己的ComboBoxModel应该很容易。

由于此解决方案从您的 ArrayList 创建了一个新的 Vector,因此在创建 Vector 后对 yourArrayList 的更改将不会发生”在您的 JComboBox 中不可见。如果您需要这个,那么您必须实现自己的 ComboBoxModel (请参阅 DefaultComboBoxModel 实现)。

无论如何,您都必须执行此操作,因为没有采用 ListDefaultComboBoxModel 构造函数。

class SpecialComboBoxModel extends DefaultComboBoxModel {
public final static String NULL_ELEMENT = "<None>";

public SpecialComboBoxModel(Vector v) {
super(v);
}

@Override
public int getSize() {
return super.getSize() + 1;
}

@Override
public Object getElementAt(int index) {
if( index == 0) {
return NULL_ELEMENT;
}
return super.getElementAt(index - 1);
}
}


ArrayList<String> yourArrayList = new ArrayList<String>();
yourArrayList.add("Value1");
yourArrayList.add("Value2");
Vector<String> v = new Vector<String>(yourArrayList);
dropdown.setModel(new SpecialComboBoxModel(v));

关于java - Swing ComboBox,选择 "none of the below",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2175600/

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