2008-11-17 16 views
13

Wir haben ein einfaches Projekt, wo wir Daten aus einem Socket lesen und eine Tabelle mit den kommenden Daten füllen wollen, aber wir finden keine Möglichkeit, Zeilen zu einem noch erstellten JTable Objekt hinzuzufügen, Wir können nur herausfinden, wie Zeilen zum Zeitpunkt der Erstellung der Tabelle hinzugefügt werden.Hinzufügen von Zeilen zu einer JTable

Ist es möglich, Zeilen dynamisch zu einer JTable hinzuzufügen, oder gibt es ein besseres alternatives Objekt, um mit dieser Art der Datenanzeige umzugehen?

EDIT: Vielen Dank für Ihre Antworten.

Alle drei sehen sehr vielversprechend aus, aber ich muss nur eines wählen und ich denke, das beste ist Guillaume.

Antwort

12

Sie sollten eine benutzerdefinierte TableModel erstellen. A JTable speichert die Zeilen nicht wirklich, es delegiert es immer an eine TableModel. Um Sie bei der Implementierung zu unterstützen, sollten Sie AbstractTableModel verwenden. Vergessen Sie nicht, jedes Mal, wenn Sie Zeilen hinzufügen, fireTableRowsInserted() aufzurufen. Versuchen Sie, die Aktualisierungen zu häufen und viele Zeilen gleichzeitig hinzuzufügen, um eine bessere Leistung zu erzielen, wenn Sie viele Zeilen hinzufügen.

6

Sobald Sie beginnen, Elemente dynamisch von einer JTable hinzuzufügen und zu entfernen, müssen Sie wirklich ein TableModel verwenden.

Weitere Informationen finden Sie unter Java Tutorial.

11

Wenn Sie das Standardtabellenmodell für eine JTable verwenden, dann können Sie Zeilen hinzufügen mit folgendem Code

if (dest+1 < table.getRowCount()-1) 
    ((DefaultTableModel) table.getModel()).insertRow(dest+1, getValuesForNewRow()); 
    else 
    ((DefaultTableModel) table.getModel()).addRow(getValuesForNewRow()); 
+7

Es ist am besten zu halten gerade halten, die DefaultTableModel bevor es an dem JTable Konstruktor übergeben. Dann müssen Sie nicht die JTable berühren oder ein Casting durchführen. –

Verwandte Themen