【发布时间】:2014-09-07 15:21:46
【问题描述】:
在我的程序中,我使用了几个 JComboBoxes 和一个简单的列表组合框模型:
public class ListComboBoxModel<T> extends AbstractListModel implements ComboBoxModel {
protected List<T> list;
private T selection;
public ListComboBoxModel(List<T> list) {
this.list = list;
this.selection = getDefaultSelection();
}
protected T getDefaultSelection() {
if (list.size() > 0) {
return list.get(0);
} else {
return null;
}
}
@Override
public Object getSelectedItem() {
return selection;
}
@Override
public void setSelectedItem(Object anItem) {
selection = (T) anItem;
}
@Override
public int getSize() {
return list.size();
}
@Override
public T getElementAt(int index) {
return list.get(index);
}
}
问题是,当我将元素添加到组合框正在使用的列表中时,它不再按预期工作。如果我单击组合框,则列表的长度正确,但其中的所有元素都是空的,因此列表全为白色。当我滚动一个元素时,它不会突出显示。当我单击列表中的任意位置时,它总是像我选择了最近添加的元素一样工作。如果我将列表大小减小到原始大小甚至减小,组合框将按应有的方式工作。 为了编辑组合框使用的列表,我使用了 JTables 和我在它们的模型中实现的 add 方法。
public void add(T element) {
list.add(element);
fireTableDataChanged();
}
有什么办法可以解决这个问题吗?
【问题讨论】: