2016-04-15 8 views
0

上記のように、列の数がわからないので、明らかにString[]配列の問題が発生しています。少なくとも2つの列があります - それは与えられたものです。DefaultTableModel、行追加、動的な列数

この制限を回避するにはどうすればよいですか?

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



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

tableModel.addRow(row); 

view.getPriceHistoryTable().setModel(tableModel); 

けど(queryResult.size場合)は、代わりに私がやりたいその後、1より大きい:

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

tableModel.addRow(row); 

view.getPriceHistoryTable().setModel(tableModel); 

のように...

+0

質問は分かりません。あなたのqueryResult.size()はあなたに列の数を教えてください。または、table.getColumnCount()メソッドを使用することもできます。 – camickr

+0

@camickr追加の説明 – LucasSeveryn

+0

なぜデフォルトの列数でモデルを作成できないのですか?データがそうであれば、追加の列を追加するために '.addColumn()'を使用するのはなぜですか? – KevinO

答えて

1

配列のサイズを結果:

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

これは答えである場合は、配列を使用しないでください。 VectorとaddElement()メソッドを使用してVectorに項目を追加するだけです。 DefaultTableModelはArrayをVectorに変換するため、Vectorを使用する方が効率的です。 – camickr

0

あなたはを通して列モデルにアクセスすることができますJTableオブジェクトで列に関するすべての情報がある

int cols = table.getColumnCount(); 

モデルを使用して、行の数sおよび列このよう

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

だから、あなたはあなたのクエリに応じて動的に行と列のあなたの数を設定することができますが、コンパイル時定数である必要はありません

+0

私はそれを知っていますが、それは私の問題で私を助けません – LucasSeveryn

関連する問題