0
    public TableModel getTableData() {
     TableModel model=null;
    try {
        String sql = "SELECT eventID as 'Event ID', date as 'Date',eventName as 'Name', time as 'Start Time' FROM Event";
        pst = conn.prepareStatement(sql); 
        rs = pst.executeQuery();
        model = (DbUtils.resultSetToTableModel(rs));
       //CODE TO SET WIDTH OF JTABLE IN VIEWS
        }
    catch(SQLException e){
        e.printStackTrace();
    }
   finally {
        try {rs.close(); pst.close();}
        catch(SQLException e){}     }                                 
       return model; 
}

上記は Model クラスのメソッドで、ビューにある というテーブルのテーブル モデルを設定しますtableEvent

Controller クラスは、上記のメソッドを使用して、クラスの状態を変更しtableEventますViewstableEventビューには空/何もないことに注意してください。モデルは の値を渡しrsController、テーブルの表示を変更して値を設定します。

私が意味することは次のとおりです。

view.tableEvent.setModel(model.getTableData());

ただし、列の幅をスルーでModelはなくに設定しようとしています。列の幅を設定するためにテーブル自体をメソッドに渡すと、実際には機能しません。モデル クラスのテーブルの最初の 4 列の希望の幅を geTableData() メソッドで何らかの方法で指定して、常に一貫性を保つ方法はありますか。現在、Views クラスのコンストラクターの一部にこれがあります。これは明らかに、初期化時にのみ目的の幅になることを意味します。 ViewstableEvent.getColumnModel().getColumn(1).setPreferredWidth(60);getTableData()

4

1 に答える 1

1

JTableまたはが空で列情報がない場合は、TableModelその情報を自分で指定する必要があります。

新しいTableColumnModelを作成し、必要な を追加して、必要なTableColumns/必要な幅情報を提供し、そのモデルを に適用することができますJTable

TableModel次に、 に入力し、それを にも提供する必要がありJTableます。

ResultSet個人的には、データを取得しようとする前にメタデータを抽出します。

于 2013-01-23T23:20:06.640 に答える