2016-04-15 11 views
0

Wie oben, ich weiß nicht, wie viele Spalten in einer Zeile sein werden, so dass ich offensichtlich Probleme mit dem Array String[]. Es wird mindestens 2 Spalten geben - das ist selbstverständlich.DefaultTableModel, Zeile hinzufügen, dynamische Anzahl der Spalten

Wie kann ich diese Einschränkung umgehen?

DefaultTableModel tableModel = new DefaultTableModel(0,1+queryResult.size()); 



Object[] row = {t.getDate(),'some data'}; 

tableModel.addRow(row); 

view.getPriceHistoryTable().setModel(tableModel); 

aber wenn queryResult.size() größer als 1 ist dann stattdessen will ich tun:

Object[] row = {t.getDate(),'some data','more data'}; 

tableModel.addRow(row); 

view.getPriceHistoryTable().setModel(tableModel); 

und so weiter ...

+0

Ich verstehe die Frage nicht. Ihre queryResult.size() sollte Ihnen die Anzahl der Spalten mitteilen. Oder Sie können die table.getColumnCount() -Methode verwenden. – camickr

+0

@camickr Erläuterung hinzugefügt – LucasSeveryn

+0

Warum können Sie das Modell nicht mit einer Standardanzahl von Spalten erstellen und dann '.addColumn()' verwenden, um die zusätzliche Spalte hinzuzufügen, wenn die Daten dies anzeigen? – KevinO

Antwort

1

Die Größe eines Arrays nicht über eine Kompilierung, konstant sein:

int colCount = 1 + queryResult.size(); 

String[] row = new String[colCount]; 
row[0] = t.getDate(); 

for(int i = 1; i < row.length; i++) { 
    row[i] = "some data"; // or get data from somewhere else 
} 

tableModel.addRow(row); 
+2

Wenn dies die Antwort ist dann verwenden Sie kein Array. Verwenden Sie einfach einen Vektor und die addElement() -Methode, um Elemente zum Vektor hinzuzufügen. Das DefaultTableModel konvertiert das Array trotzdem in einen Vektor, daher wäre die Verwendung des Vektors effizienter. – camickr

0

Sie das Spaltenmodell zugreifen können durch Ihre JTable Objekt und haben alle Informationen über Ihre Spalten

int cols = table.getColumnCount(); 

Ihr Modell verwenden, können Sie die Anzahl der Zeile gesetzt s und Spalten auf diese Weise

model.setRowCount(rows); 
model.setColumnCount(cols); 

So können Sie einstellen, dynamisch die Anzahl der Zeilen und Spalten entsprechend Ihre Abfrageergebnisse

+0

Ich weiß das, aber es hilft mir nicht mit meinem Problem – LucasSeveryn

Verwandte Themen