2016-03-30 14 views
1

動的な列数のJTableを使用する作業のためにプロジェクトを進めています。各列は基本的には別々のトランザクションですが、ファイルがあらかじめ用意されているトランザクションの数はわかりません。オブジェクトに動的に文字列を追加する[]

一般的に、私はJTableのを作成するとき、私は私が持っているだろうと私はこのようにそれを宣言するどのように多くの列を知っている:しかし、毎回の取引の数に制限はありませんプログラムがそのように使用されているこのプロジェクトのために

String header[] = new String[]{ 

       "Tag","Transaction1" 

     }; 

列を作成する前に、特定の配列の長さに基づいて列を動的に追加する必要があります。 (最初の行は実際にはヘッダーとしても使用されます)。

私は与えられた長さの配列を持っていますが、少なくとも上記のコードのようなオブジェクトを作成するとループでこの値を使用する方法がわかりません。例えば

のユーザーが3つのトランザクションを持つファイルをアップロードしましょう..私は読むために[]私の文字列ヘッダが必要になります

String header[] = new String[]{ 

       "Tag","Transaction1","Transaction2","Transaction3" 

     }; 

を私はおそらく配列リストを作成し、トランザクションを追加すると考えるのですこれにカウンターとループを使用して、String []ヘッダーに値を抽出することもできますが、これが最善のアプローチであるかどうか、さらに正確に動作させる方法がわかりません。あなたはいけない

+1

ます。http:// stackoverflowのように見えると思います

。com/questions/7969023/from-arraylist-to-array – NAMS

+0

それは私の質問に答えることさえしません。 ArrayListをArrayに変換するだけです。これは、私が求めているものではありません。動的に列を追加したり、動的にヘッダオブジェクトを埋める方法を求めています。 – jesric1029

+1

新しいデータを取得したり、リストを使用したりするときは、配列を置き換えてください。いずれにしても、独自のテーブルモデル実装を提供することが最善の方法です。配列を作成する前にデータを知っていれば、 'String header [] = new String [numTransactions + 1]'のように作成してから、ループを使って必要に応じて要素を埋めてください。 – Thomas

答えて

1

はあなたのために良いオプションはを持っているだろうを使用して、Listに要素を動的に追加または削除します。必要に応じて、あなたは文字列の配列へArrayList ..

ArrayList<String> elements = new ArrayList<String>(); 
elements.add("Transaction 1"); 
elements.add("Transaction 2"); 
elements.add("Transaction 3"); 

Object[] elementArray = elements.toArray(); 
+0

ああ、今は完璧です!私の解析されたデータは既に配列リストに格納されているので、ループを使用して抽出する代わりに、文字通りObjectに変換してから表を塗りつぶすことができます。パーフェクトです!ありがとう、プログラムが今の方法よりも効率的です!私は実際には "Transaction1"という列を呼んでいません。ここでは簡単にするために、実際に配列リストにある同じ値を使用しています。 – jesric1029

1

私の事は、これはあなたがそれを繰り返す、同じくらいあなたが必要とするようサイズを増やすことができますので、より良いリストを使用して、配列を使用する必要があり、文字列、配列など

にそれを解析例

​​4712​​
+0

私はあなたのソリューションを試しました、私はベクトルとしてそれにキャストを追加することを余儀なくされました。それがうまくいくかどうかは確かではありませんが、私はあなたの答えをテストし、それが正しく動作するとマークし、私の解決策よりも効率的になります。 – jesric1029

3

は、私が実際にどうやら私は配列全体をスクラップし、このようにそれらを追加する必要があります。これに答えを見つけた。..

DefaultTableModel tableModel = new DefaultTableModel(); 

for(String columnName : columnNames){ 
    tableModel.addColumn(columnName); 
} 

jTable.setModel(tableModel); 
1
List<String> headerList = new ArrayList<>(); 
    headerList.add("Tag"); 
    for(int i=1; i <= transactions.length; i++){ 
     headerList.add("Transaction" + i); 
    } 
    String[] header = headerList.toArray(new String[headerList.size()]); 
1

のように私はあなたが探しているものと考えているがArrayList、ない配列やリストであることを変えることができその後

、これにより、動的割り当てが可能になるためです。

構文は次のようになります。それを初期化し

List<String> header = new ArrayList<String>(); 
header.add("Tag"); 

。その後、Fileクラスのlength()を使用してループのパラメータを設定し、文字列連結の結果を "Transaction" +ループインデックスとともにArrayListに動的に追加します。

for (int i = 1; i <= file.length(); i++){ 
    header.Add("Transaction" + i); 
} 

そして、その後、あなたが戻って文字列の配列に変換することができます:

String[] headerArray = header.toArray(new String[header.size()]); 
関連する問題