在Java中删除另一个对象后向列表中添加对象

在Java中删除另一个对象后向列表中添加对象,java,swing,Java,Swing,我有一段代码,它创建了一个列表: rightPanel.add(Box.createRigidArea(new Dimension(20, 20))); final DefaultListModel model = new DefaultListModel(); for(int i=0;i<nameData.length;i++){ if(nameData[i]==null) break; model.addElement(nameData[i]); } f

我有一段代码,它创建了一个列表:

rightPanel.add(Box.createRigidArea(new Dimension(20, 20)));
final DefaultListModel model = new DefaultListModel();
for(int i=0;i<nameData.length;i++){
    if(nameData[i]==null) break;
        model.addElement(nameData[i]);
    }
final JList list = new JList();
list.setModel(model);
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(250, 80));
listScroller.setAlignmentX(LEFT_ALIGNMENT);
rightPanel.add(listScroller);
但是在删除对象后,当我试图将新对象添加到列表所用的同一数组中时,它将不再显示列表中的更改。

此处:

//Adds the data from the textfield to corresponding string.
String name = nameTextField.getText();
String eMail = eMailTextField.getText();
String dateOfBirth = dateOfBirthTextField.getText();
String address = addressTextField.getText();

//Stores the string data in an array.
nameData[n] = name;
eMailData[n] = eMail;
dateOfBirthData[n] = dateOfBirth;
addressData[n] = address;
为什么有很多数组,比如
nameData[]
emailData[]
等等?创建一个类来保存这些信息不是更好吗?例如:

class Data {

    String name;
    String email;
    Date dateOfBirth;
    String address;

    public Data(String name, String email, Date dateOfBirth, String address){ ... }

    // getters and setters here
}
然后,您可以在列表模型中添加
数据
对象,如下所示:

String name = nameTextField.getText();
String eMail = eMailTextField.getText();
String dateOfBirth = dateOfBirthTextField.getText();
String address = addressTextField.getText();

DefaultListModel model = (DefaultListModel)list.getModel();
model.add(new Data(name, eMail, dateOfBirth, address));

请仔细阅读教程。它是您的朋友。

“将新对象添加到列表所包含的同一数组”这到底是什么意思?基本上,我想向数组添加一个对象,列表从中获取对象。我知道这可能是一种更方便的数据存储方式,但这能解决列表不刷新的问题吗?问题发生在我从中删除一个项目时,在删除之前,它在添加和编辑信息时正常工作。基本上,如果您直接在模型中添加/删除元素,那么您的问题将得到解决。
模型
负责通知
视图
数据已更改,最后一个数据应在没有任何问题的情况下更新@丹罗迪
String name = nameTextField.getText();
String eMail = eMailTextField.getText();
String dateOfBirth = dateOfBirthTextField.getText();
String address = addressTextField.getText();

DefaultListModel model = (DefaultListModel)list.getModel();
model.add(new Data(name, eMail, dateOfBirth, address));