AbstractListModel中的方法刷新JComboBox?

时间:2012-05-08 01:41:38

标签: java swing jcombobox

JComboBox从数据库中检索信息。添加数据后,列表应立即更新。

我知道我需要fireContentsChanged来更新值。我不确定在方法上应该做些什么。任何指导将不胜感激!

class ComboModel extends AbstractListModel implements ComboBoxModel 
{
    ArrayList list = new ArrayList();

    @Override
    public Object getElementAt(int arg0) {

        return null;
    }

    @Override
    public int getSize() {
        return list.size();     
    }

    @Override
    public Object getSelectedItem() {


    }

    @Override
    public void setSelectedItem(Object arg0) {


    }           
}


stockListComboBox = new JComboBox();
ComboModel model = new ComboModel();
stockListComboBox.setModel(model);          

try
{
    // Database stuffs
}

catch(Exception e)
{
    e.printStackTrace();
}

2 个答案:

答案 0 :(得分:2)

您需要提供一些集合作为模型的核心,比如ArrayList或其他类型的有序列表。这样做,方法将开始有意义。

答案 1 :(得分:0)

如上所述,您需要提供数据。组合框最简单的方法是使用DefaultComboBoxModel,它在其构造函数中使用Object []。一般来说,上面提到的前两种方法是为了1)获取列表中的元素,2)返回列表的大小。

接下来的两个用于跟踪列表中的哪个项目被选中。我建议看看javadocs。此外,如果您正在使用eclipse,netbeans或intellij,您应该可以非常轻松地查看DefaultComboBoxModel的源代码,并且应该明显看出这些方法正在做什么。