0

我需要一些关于将项目添加到 JList 的帮助。我从事一些“图书馆”类的项目。而且我需要将读者添加到已经存在的 JList 中。但是当我尝试添加它时,JList 只是重置,删除所有阅读器并开始将阅读器添加到新的空白 JList。但我不需要它来制作新列表,而是将其添加到已经存在的列表中。

我知道这是关于添加后创建新模型的事情,但我不知道在哪里修复它。

panelHorni = new JPanel();
    listModel = new DefaultListModel();
    listCtenaru = new JList(listModel);

    FileInputStream fis = new FileInputStream("myjlist.bin");
    ObjectInputStream ois = new ObjectInputStream(fis);

    listCtenaru = (JList)ois.readObject();

    listScroll = new JScrollPane();
    listScroll.add(listCtenaru);


    listCtenaru.setPreferredSize(new Dimension(350, 417));
    listCtenaru.setBackground(new Color(238,238,238));

    panelHorni.add(listCtenaru);

听众

 public void actionPerformed(ActionEvent e) {

            String jmeno = pole1.getText();
            String prijmeni = pole2.getText();

            listModel.addElement(jmeno +" "+ prijmeni);
            listCtenaru.setModel(listModel);

            pole1.setText("");
            pole2.setText("");
            pole1.requestFocus();
4

2 回答 2

1
listModel.addElement(jmeno +" "+ prijmeni);
//listCtenaru.setModel(listModel);

如果您尝试更新现有模型,则无需使用 setModel() 方法。您尝试执行此操作的事实表明您正在创建新模型而不是更新现有模型。

有关更新现有模型的工作示例,请参阅有关如何使用列表的 Swing 教程。

于 2013-05-23T20:10:48.690 回答
-1

的默认模型JListListModel您必须首先在构造函数中将其更改为DefaultListModel.
这解决了你的问题:

private JList list ;
private DefaultListModel model;
public ListModelTest(){//default constructor
//....
list = new JList();
model = new DefaultListModel();
list.setModel(model);
//....
}
public void actionPerformed(ActionEvent ev){
 model.addElement("element");
 //....
}
于 2013-05-23T17:42:02.340 回答