簡體   English   中英

從另一個類設置JTable列寬

[英]Setting JTable Column width from another class

    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類的方法,負責為我在Views中名為tableEvent的表設置表模型。

Controller類使用上述方法來設置Views類的tableEvent的更改狀態。 請注意,Views中的tableEvent為空/無。 模型將rs值傳遞給ControllerController隨后將更改表的顯示並填充值。

這是我的意思:

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

但是,我試圖通過tableEvent.getColumnModel().getColumn(1).setPreferredWidth(60);Model而不是在Views設置列的寬度tableEvent.getColumnModel().getColumn(1).setPreferredWidth(60); 如果我將表本身傳遞給getTableData()方法以設置列的寬度,則它實際上不起作用。 有沒有一種方法可以某種方式在geTableData()方法中的Model類中指定表的前4列的所需寬度,以使其始終保持一致。 現在,我在Views類的構造函數中擁有此函數,這顯然意味着僅在初始化時才達到我期望的寬度。

如果JTableTableModel為空並且沒有列信息,那么您需要自己提供該信息。

您可以創建一個新的TableColumnModel ,將所需的TableColumns添加到其中,提供所需的寬度信息,然后將該模型應用於JTable

然后,您需要填寫TableModel並將其提供給JTable

我個人將嘗試從ResultSet提取元數據,然后再嘗試從中獲取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM