java - 抽象表模型

标签 java swing

我在使用 AbstractTableModel 时遇到问题,我使用链表作为数据容器,然后从数据库中的表中获取记录,然后将其放入表模型中的链表中,然后我男 jable.setModel(model)。我面临的问题是,我从数据库表中获取的最后一条记录重复了n次,因为n是数据库中的记录数。 当我制作 model.getIndextOF(anAppointmentDate); 时每次都返回 0,所以我认为每次都将对象插入到同一个位置?我可能错了,但这就是我的想法 公共(public)类 AppointmentModel 扩展 AbstractTableModel {

List<appointmentDate> patientAppointment;

public appointmentModel() {
    patientAppointment = new LinkedList<appointmentDate>();   // linked list
}

public int getRowCount() {
    return patientAppointment.size();
}

public int getColumnCount() {
    return 2;
}

public String getValueAt(int rowIndex, int columnIndex) {
    if (columnIndex == 0) {
        return patientAppointment.get(rowIndex).getDateOFAppointment();
    } else if (columnIndex == 1) {
        return patientAppointment.get(rowIndex).getTimeOfAppointment();
    } else {
        return "Not found";
    }
}

public String getColumnName(int column) {
    if (column == 0) {
        return "date";
    } else if (column == 1) {
        return "time";
    } else {
        return "not found";
    }
}

public void insertRecord(appointmentDate anAppointmentDate)
{
    list.add(anAppointmentDate);  
    fireTableRowsInserted(list.size()-1, list.size()-1);
    System.out.println(list.indexOf(anAppointmentDate)); // each time it prints 0        
}

///////////////////// 在这里我使用模型

while (resultSet.next()) {
           N_Date= resultSet.getDate("appointDate");
           anAppointment.setDateOFAppointment(N_Date);

            N_time = resultSet.getString("appointTime"); 
            anAppointment.setTimeOfAppointment(N_time);
            tableModel.insertRecord(anAppointment);

           }
             jTable.setModel(tableModel);      

我的输出是所有表记录中重复的最后一条记录,请帮忙!

最佳答案

您正在使用对 AppointmentDate 对象的相同引用,并且仅更改其内部状态。

因此每次您将相同的对象添加到列表中时。因此,在最后一次循环迭代中,您将列表内的所有对象设置为具有最后一行的数据。

要解决此问题,请在每次循环迭代时实例化一个 new AppointmentDate():

while (resultSet.next()) {
    AppointmentDate anAppointment = new AppontmentDate();
    // the rest is the same
}

另请注意,类名应以大写字母开头 - 即 AppointmentDate,而不是 appointmentDate

关于java - 抽象表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3220696/

相关文章:

java - Date.after 和 Data.after 位于同一 if 语句中

java - 当表数据更改时,JTable 多选会失去选择

java - 不使用cmd运行jar

java - 用java按钮在浏览器中打开一个链接?

java - Selenium + Java 的 elementToBeClickable 问题

java - 在android中嵌套两个动画

Java lambda 子列表

java - 在android中发送非打印字符二进制短信

java - HH 中的 JTextField 时间 :mm:ss

java - 当相应列具有空值时,我可以从 jtable 中删除复选框吗?