I'm quite new in Java, so please don't be so hard if this question is very stupid.
I have a problem. I want to display incoming messages in a list. So I choose a JTable, with an AbstractTableModel and a static LinkedList.
The initialization of the Table looks like this:
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jTable1.setModel(new MessagesTableModel());
jScrollPane1.setViewportView(jTable1);
My AbstractTableModel looks like this:
public class MessagesTableModel extends AbstractTableModel {
private static List<MsgGeneral> data;
// Specify the types of columns. -> constructor
Class[] types;
private static String[] COLUMN_NAMES = {
    "Timestamp",
    "Length",
    "Direction",
    "Header",
    "Content"
};
public MessagesTableModel() {
    //define column types
    types = this.types = new Class[]{
        String.class,
        Integer.class,
        String.class,
        Integer.class,
        Object.class};
    data = MainThread.MessageListGeneral;
}
@Override
public String getColumnName(int column) {
    return COLUMN_NAMES[column];
}
@Override
public Class getColumnClass(int columnIndex) {
    return types[columnIndex];
}
@Override
public int getRowCount() {
    return data.size();
}
@Override
public int getColumnCount() {
    return types.length;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    MsgGeneral msg = data.get(rowIndex);
    switch (columnIndex) {
        case 0:
            return msg.getTimestamp();
        case 1:
            return msg.getMsgLenght();
        case 2:
            return msg.getDirection();
        case 3:
            return msg.getHeader();
        case 4:
            return msg.getContent().toString();
        default:
            return null;
    }
}
The List is simply defined like this:
public static LinkedList<MsgGeneral> MessageListGeneral = new LinkedList<MsgGeneral>();
And I fill this list like this:
MessageListGeneral.add(new MsgGeneral(data.length, 0, header, "some note", data));
And now my Question, or what I don't understand: How can I dynamically refresh the table, when a new row is added? I think I need something like a ObservableCollection in .NET, or a event listener on the "add". How can I do that.
Thanks a lot for every hint br Alex
 
    