Swing 无法清除JList Java

Swing 无法清除JList Java,swing,jlist,Swing,Jlist,我正在使用NETBEANS 7。我在我的项目中有一个JList。这是我的密码 private void dateChooserSelectedDatePropertyChange(java.beans.PropertyChangeEvent evt) { DefaultListModel model = new DefaultListModel(); listSerial

我正在使用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();
    }
}  
然后列表中填充了vector serialNo中的一些数据

我的问题是:

  • 如果日期值已更改,并且所选日期不存在任何记录,我希望清除列表的内容
  • 当我点击表单上的“重置”按钮时,我还想清除列表中的内容

  • 基本上,我无法清楚jList的内容。请引导我。谢谢。

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

    方法
    setListData
    实际上替换了
    JList
    的数据模型。因此,不清除当前列表模型,而是清除最初指定的(不再使用的)列表模型。因此,不要使用
    setListData
    ,而是直接将新元素添加到原始模型中。

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

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


    因此,为什么不删除这两行代码,因为根据您的帖子,这两行代码似乎有效。

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

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

    因此,为什么不删除这两行呢?因为根据你的帖子,这两行似乎很有效。

    试试这个-

    listSerialNo.setListData(new Vector());
    
    这将使用空向量对象重新设置列表数据

    因此,所有列表数据都将被删除。

    试试这个-

    listSerialNo.setListData(new Vector());
    
    这将使用空向量对象重新设置列表数据


    因此,所有列表数据都将被删除。

    对于解决方案,您最好查看Howard的答案,因为它更好。可能是我们两个答案的混合。我不知道OP每次都在创建一个新的
    JList
    。因此,这也可能是一个可能的麻烦来源。对于解决方案,你最好看看霍华德的答案,因为它更好。也许它是我们两个答案的混合。我不知道OP每次都在创建一个新的
    JList
    。所以这也可能是一个可能的问题源;但它给我的错误是“找不到方法clear()”。我不知道发生了什么…@appDev抱歉,是我的错。该模型根本没有明确的方法。然后你必须使用第二种方法,或者完全重置模型。你能告诉我应该做什么吗。因为我是java开发者的新手。我完全不明白这件事。我将行更改为listSerialNo.getModel().clear();但它给我的错误是“找不到方法clear()”。我不知道发生了什么…@appDev抱歉,是我的错。该模型根本没有明确的方法。然后你必须使用第二种方法,或者完全重置模型。你能告诉我应该做什么吗。因为我是java开发者的新手。我完全不明白这件事。listSerialNo.setListData(新字符串[0])也可以使用,而且可能是现在的首选,因为Vector是一个“过时”的JDK类。listSerialNo.setListData(新字符串[0])也可以使用,并且可能是现在的首选,因为Vector是一个“过时”的JDK类。