[英]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.