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