我尝试先在Netbeans中创建一个Jlist,首先创建一个ScrollPane然后再添加一个Jlist。
然后我继续用一些字符串填充JList,使用defaultlistmodel.add(String a)。第一次很好地显示项目。但现在基于用户输入,我想清除列表模型中的所有元素并创建一个新列表。
这是我开始遇到一些问题的地方。 model.clear()似乎没有工作,也没有jList1.removeAllElements()..
我需要知道我哪里出错了?
private void populateList(){
readFileContents();
model.clear();
jScrollPane1.validate();
for(String str : list){
model.addElement(str);
}
jList1.setModel(model);
}
答案 0 :(得分:0)
以下是如何重新填充JList
:
public class ClearList extends JFrame {
String[] list1 = new String[] {"AAAA", "BBBB", "CCCC"};
String[] list2 = new String[] {"1111", "2222", "3333"};
DefaultListModel<String> model = new DefaultListModel<>();
ClearList() {
JList<String> list = new JList<>(model);
addElements(list1);
JButton button = new JButton("Repopulate");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
model.clear();
addElements(list2);
}
});
getContentPane().add(list);
getContentPane().add(button, BorderLayout.LINE_START);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
setVisible(true);
}
private void addElements(String[] elements) {
for (String s : elements)
model.addElement(s);
}
public static void main(String[] args) {
new ClearList();
}
}
您应该考虑将addElements
添加到扩展DefaultListModel
的自定义类中,或者如果您要管理多个模型,请将其设为模型:addElements(String[] elements, ListModel model)
。