データベースには 6 つの列と最大約 20 行があります。私は、JTable にこれらの値を設定する一般的なプログラムを Java で作成するのが好きです。私は動的配列の使用に非常に精通していますが、Swing の JTable 属性とモデルには慣れていません。
誰でも要件についてここで私を案内できますか? ありがとう
独自のテーブルモデルを作成する必要があります。ここでAPIドキュメントを参照してください:http://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableModel.html
基本的に、列の数、データベース内の行の数、すべての列の名前(データベースからの列名、または定数文字列配列からの任意の名前)getColumnCount()
を返します。単純なケースでは、すべての列に対してString.classを返すことができます。次に、すべての値を文字列に変換する必要があります。getRowCount()
getColumnName(int columnIndex)
getColumnClass(int columnIndex)
getValueAt(int rowIndex, int columnIndex)
指定された行と列のデータベースから値を返す必要があります。おそらく、これらすべての値を2D配列などにプリロードする必要があります(ただし、これは別の質問に対する答えになります;))。
今のところ、他のメソッドは無視できます。これらは編集可能なテーブル用です。
コードは次のようになります。
String[][] tableData = readTableDataFromDatabase();
String columnNames = initColumnNames(); //From DB or constants
TableModel model = new DbTableModel(tableData, columnNames);
class DbTableModel extends AbstractTableModel {
private String[][] tableData;
private String[] columnNames;
public DbTableModel(String[][] tableData, columnNames) {
this.tableData = tableData;
this.columnNames = columnNames;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return tableData[rowIndex][columnIndex];
}
@Override
public int getRowCount() {
return tableData.length;
}
@Override
public int getColumnCount() {
if(tableData.length == 0)
return 0;
return tableData[0].length;
}
@Override
public String getColumnName(int column) {
return columnNames[column]
}
}
この例では、データベースからデータを2D配列として読み取ることを前提としています。O / R-Mapper(Java Persistence API-JPAなど)を使用する場合は、エンティティのリストをロードすることを強くお勧めします。各エンティティには、テーブル行のデータが含まれます。とにかく、テーブルモデルはあまり変わりません。配列値にアクセスする代わりに、リストからエンティティオブジェクトを取得し、「get
」-エンティティのメソッドを呼び出します。
Javaチュートリアルに詳細があります:http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
素敵ですが、readTableDataFromDatabase(); を願っています。結果セットオブジェクトを返す
こちらのチュートリアルをご覧ください: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data
少し前に書いたリストベースの読み取り専用 TableModel のサンプルを次に示します。