簡體   English   中英

如何清除 Java 中的 JList?

[英]How to clear a JList in Java?

我在 gui 中有一個 jList,我可以在其中使用添加按鈕添加一些數據。 我想添加另一個名為 Clear 的按鈕,它將清除所有元素。 我試過這個:

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt)
{
    DefaultListModel listmodel=new DefaultListModel();
    jList1 = new JList(listmodel);
    if(evt.getSource()==jButtonClear) JList.setListData(new String[0];
    else listmodel.removeAllElements();
}

當我單擊“添加”按鈕時,這將添加元素。

當我點擊清除按鈕時,這將刪除元素。

但是當我重新單擊“添加”按鈕時, jList1沒有任何jList1

您不應該僅僅為了從中刪除一些項目而重新初始化整個 JList 小部件。 相反,您應該操作列表模型,因為對它的更改會“自動”同步回 UI。 假設您確實在使用DefaultListModel ,這足以實現您的“全部清除”功能:

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) {
    if(evt.getSource()==jButtonClear) {
        DefaultListModel listModel = (DefaultListModel) jList1.getModel();
        listModel.removeAllElements();
    }
}

有很多問題,首先是您的示例充滿了編譯問題,所以我希望這不是您的實際代碼。

JList沒有名為setListData靜態方法。 我認為你的意思是jList1

每次單擊清潔按鈕時,您都在創建一個新模型和組件...

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt)
{
    // ??
    DefaultListModel listmodel=new DefaultListModel();
    jList1 = new JList(listmodel);
    // ??
    if(evt.getSource()==jButtonClear) jList1.setListData(new String[0]);
    else listmodel.removeAllElements();
}

您已經成功地取消了jList1所指向的內容的引用,因此無論jList1您嘗試與它交互,您都不再與屏幕上的組件交互。

另一個問題是您向setListData方法提供了一個空數組,這基本上就像在說,“請不要在我的列表中添加任何內容”

嘗試這樣的事情;

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt)
{
    DefaultListModel listmodel = (DefaultListModel)jList1.getModel();
    if(evt.getSource()==jButtonClear) {
        listmodel.removeAllElements();
    } else {
        listModel.addElement(new String[]{"Hello"});
    }
}

試試這個:

DefaultListModel model = new DefaultListModel();
model.clear();
jList1.setModel(model);

試試這個:

DefaultListModel listmodel=new DefaultListModel();

JList.setModel(listmodel);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM