添加到现有JList

时间:2013-05-23 17:03:45

标签: java swing jlist defaultlistmodel

我需要一些关于向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();

2 个答案:

答案 0 :(得分:1)

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

如果您尝试更新现有模型,则无需使用setModel()方法。您尝试这样做的事实可能表明您正在创建新模型而不是更新现有模型。

请参阅How to Use Lists上的Swing教程,了解更新现有模型的工作示例。

答案 1 :(得分:-1)

JList的默认模型是ListModel,您必须首先将其在构造函​​数中更改为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");
 //....
}