2013-04-10 64 views
0

所以,我目前正在为我的程序构建GUI。我使用带有自定义AbstractTableModel的JTable来填充我的不同LinkedLists的内容。 但是,如果我将一个JTable添加到我的GUI类,并在那里初始化LinkedList类,那么这不是我需要的LinkedList。我需要LinkedList Studentlist,它存储在我的Database类中。我如何告诉桌子? 我无法真正显示任何GUI代码,因为它仍然在制作中,而我现在只是在测试一些东西。从JTable的另一个类传递LinkedList。自动更新表

我的另一个问题是,这是我的AbstractTableModel上:

public class StudentTableModel extends AbstractTableModel { 

public static final String[] columnNames = { "ID", "First Name", 
     "Last Name" }; 
private LinkedList<Student> data; 

public StudentTableModel(LinkedList<Student> data) { 
    this.data = data; 
} 

@Override 
public int getColumnCount() { 
    return columnNames.length; 
} 

@Override 
public String getColumnName(int column) { 
    return columnNames[column]; 
} 

@Override 
public int getRowCount() { 
    return data.size(); 
} 

@Override 
public Object getValueAt(int rowIndex, int columnIndex) { 
    Student student = data.get(rowIndex); 
    if (student == null) { 
     return null; 
    } 
    switch (columnIndex) { 
    case 0: 
     return student.getID(); 
    case 1: 
     return student.getFirstname(); 
    case 2: 
     return student.getLastname(); 
    default: 
     return null; 
    } 
} 

}

我需要什么添加到代码,以使表自动更新,当学生被添加到列表中?

在此先感谢。

回答

1

在最低限度,

  • 如图所示here,你执行setValueAt()必须触发一个事件适当到您的更新。

  • 如果您公开的方法发生变异data,它也必须触发一个适当的事件。

在这方面,适当装置AbstractTableModel继承fireXxx()方法之一。

1

我是否需要在代码中添加任何内容以使学生在添加到列表时自动更新 ?

TableModel中创建一个方法,这样当添加学生时,将Student对象传递给列表并将其添加到列表中。由于您正在使用AbstractTableModel,因此您需要在数据更改后触发适当的事件。

private void addStudent(Student student) { 
    data.add(student); 
    fireTableDataChanged(); 
} 

如果我添加一个JTable我的GUI类,并初始化LinkedList类 存在,那么这是不是我需要的LinkedList的。我需要 LinkedList Studentlist,它存储在我的Database类中。

在创建表模型时,查询StudentList并将该列表发送到表模型构造函数。

相关问题