2011-11-09 10 views
0
String[] columnNames = {"Type", "Employee ID", "First/Last Name","DOB", "Gender", "HIre Date", "OnCall", "BaseSalary", "Commission/Hourly Rate"}; 
    Object[][] data = new Object[10][9]; 
table = new JTable(data,columnNames); 

public ArrayList<Person> employeeList = new ArrayList<Person>(); 
public ArrayList<Client> clientList = new ArrayList<Client>(); 
public ArrayList<Stock> stockList = new ArrayList<Stock>(); 

配列リスト内の情報でJTableを作成しようとしています。私は何かを試してみました。本当にうまく機能しなかったJTableオブジェクト配列

data[0][0] = "Account"; 
data[0][1] = 1; //int 
data[0][2] = "Name"; 
data[0][3] = dob; //Date class 
data[0][4] = gender; //Enum 
data[0][5] = hire //Date class 
data[0][6] = true; //boolean 
data[0][7] = 125.23; //double 
data[0][8] = 0.015; //double 

配列はあまり助けにはならなかった、私がグーグルを試みるが、例のほとんどは、事前に行われてきました。

+0

なぜそれがうまくいかなかったのか、あなたは何を期待していたのですか? – madth3

+0

私は実際にそれが動作することを期待していたが、明らかに前に人と一緒に作業していたコードが例外処理をしてエラーを投げたのでしなかった –

+0

不思議なことに今、私はテーブルを作成し、すべて... –

答えて

1

あなたの問題はデータ配列にあると思います。 Javaの配列は動的ではありません。あなたは長さ0

の配列を作成している

Object[][] data = {};

の定義あなたは、事前とuse them in the creationそれらの長さを知っているか、またはリストのtoArrayメソッドを使用できるようにする必要があるだろう。

+0

Object [row] [col]データなどのサイズを指定できますか。 –

+0

いいえ 'オブジェクト[] []データ=新しいオブジェクト[行] [列];' – madth3

+0

ああ、基本を忘れています。 –

1

JTableモデルのドキュメントは、わかりやすく簡単な説明です。ほとんどの場合、テーブルコンストラクタにデータを渡すのは間違いです。 AbstractTableModelから派生した独自のテーブルモデルを実装し、そのモデルオブジェクトをテーブルのコンストラクタに渡す必要があります。その後

あなたのテーブルモデルは、ちょうど

public ArrayList<Person> employeeList = new ArrayList<Person>(); 

のようなプライベートメンバ変数を持つことができ、あなただけの

public int getRowCount() { 
    return emplyeeList.size(); 
} 

と、このような

public Object getValueAt(int rowIndex, int columnIndex) { 
    Person p = employeeList.get(rowIndex); 
    switch (columnIndex) { 
     case 1: 
       return p.getName(); 
     .... 
    } 
} 
などのようないくつかのメソッドを実装する必要があります

など

モデルが自然なデータ構造を使用してデータを保持するので、プログラミングがはるかに簡単になります。

関連する問題