1

データベースの列を行として JTable に表示できるかどうかを知りたいです。

グラフィカルに、これは私が意味するものです、それは時刻表です:

データベース

+--------------------+---------------------+------ ---------------+----------------------+
|月曜日(8.30 -10.30) | 月曜日(10.30-12.30) | 火曜日(8.30-10.30) | 火曜日(10.30-12.30) |
|---------------------------------------------------------------- --------------------------------------|
|利用可能 | 利用可能 | 利用できません | 利用可能 |
+--------------------+---------------------+------ ---------------+----------------------+

JTable

+--------------------+--------------------------------------+
|利用可能 | 利用できません |
|--------------------|-----------------------|
|月曜日(8.30-10.30) | 火曜日(8.30 - 10.30)|
|--------------------|-----------------------|
|月曜日(10.30-12.30) | | |
|--------------------|-----------------------|
|火曜日(10.30-12.30)| | |
+--------------------+--------------------------------------+
4

3 に答える 3

2

可能 - はい。簡単です - おそらくそうではありません。

基本的に、select * from [table]クエリを作成し、結果を反復処理します。あなたはこれらを見たいと思うでしょう:

(データベースのクエリに関する基本を知っていると仮定しています)

したがって、テーブルに情報を追加するときは、次を使用します。

    JTable table = new JTable();
    DefaultTableModel model = (DefaultTableModel)table.getModel();
    ResultSet rs; // actually have your result set here
    ResultSetMetaData meta = rs.getMetaData();
    while(rs.next()){
        Object[] info = new Object[meta.getColumnCount()];
        for(int i = 0; i < meta.getColumnCount(); i++){
            info[i] = rs.getObject(i);
        }
        model.addColumn("Result" + rs.getRow(), info);
    }
    add(table);
于 2012-10-17T13:42:40.250 に答える
1
  • すべての列名を List<String> に入れます。

  • List を使用して SQL クエリを作成します。

    Select (List<String> からのカンマ区切りの文字列) from table where ...

  • Available / Unavailable をループしResultSet、対応する列名を List<String> から使用可能または使用不可としてテーブル モデルに入れます。

于 2012-10-17T14:02:59.507 に答える
0

簡単なことではありません。(私がよく理解していると仮定して) 日を列、時間を行としたアジェンダが必要ですか?

より良い方法は、AbstractTableModel を必要なだけ拡張することだと思います (たとえば、DayTableModel、WeekTableModel など) 。 /extendsAbstractTableModelCustomclasstype.htm

お役に立てば幸いです。

編集:それを理解していませんでした。とにかく、それを行う最善の方法は、AbstractTableModel を拡張することだと思います (ただし、1 回だけ)。

于 2012-10-17T13:46:45.160 に答える