0

データベースには 6 つの列と最大約 20 行があります。私は、JTable にこれらの値を設定する一般的なプログラムを Java で作成するのが好きです。私は動的配列の使用に非常に精通していますが、Swing の JTable 属性とモデルには慣れていません。

誰でも要件についてここで私を案内できますか? ありがとう

4

3 に答える 3

2

独自のテーブルモデルを作成する必要があります。ここで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

于 2012-11-26T08:37:55.697 に答える
0

素敵ですが、readTableDataFromDatabase(); を願っています。結果セットオブジェクトを返す

于 2013-05-24T09:31:23.267 に答える
0

こちらのチュートリアルをご覧ください: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data

少し前に書いたリストベースの読み取り専用 TableModel のサンプルを次に示します。

https://sourceforge.net/p/puces-samples/code/HEAD/tree/tags/sessionstate-1.0/sessionstate-suite/sessionstate-sample/src/blogspot/puce/sessionstate/sample/ParticipantTableModel.java

于 2012-11-26T09:20:58.183 に答える