无法清除JList Java

时间:2011-08-07 15:16:34

标签: swing jlist

使用NETBEANS 7 。我的项目中有JList。这是我的代码

private void dateChooserSelectedDatePropertyChange(java.beans.PropertyChangeEvent evt) {                                                       
    DefaultListModel model = new DefaultListModel();
    listSerialNo = new JList(model);

    UpdatePurchase updatePurchase = new UpdatePurchase();
    Vector<String> serialNo = new Vector<String>();
    serialNo = updatePurchase.getSerialNo(date);
    if(serialNo.size()>0){
        listSerialNo.setListData(serialNo);
    }
    else{

        model.clear();
        this.resetFields();
    }
}  

如果我写上面的代码,那么列表不显示任何东西&amp;它没有清除JList。但如果我删除

DefaultListModel model = new DefaultListModel();
listSerialNo = new JList(model);

然后列表填充来自vector serialNo的一些数据。

我的问题:

  1. 如果日期值发生变化,我想清除列表的内容&amp;所选日期没有记录。
  2. 当我点击表单上的“重置”按钮时,我想清除列表的内容。
  3. 基本上我无法清除jList的内容。请指导我。感谢。

3 个答案:

答案 0 :(得分:2)

试试这个 -

listSerialNo.setListData(new Vector());

这将使用空的矢量对象重新设置列表数据。

所以将删除所有列表数据。

答案 1 :(得分:1)

方法setListData实际上取代了JList的数据模型。因此,您不会清除当前列表模型,而是清除最初分配的模型(不再使用)。因此,请勿使用setListData,而是将新元素直接添加到原始模型中。

答案 2 :(得分:1)

您可能已经添加了一个可见的JList组件。在您的代码中,您将创建一个新代码,同时覆盖包含旧代码的字段。因此,您丢失了与旧(和可见)的“连接”。通过更新新的,当您更新错误的时,任何可见的都不会改变。

通过删除这两行,您不再创建新的JList并且正在更新正确的JList。

那么为什么不删除那两行似乎根据你的帖子工作。