[英]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
值傳遞給Controller
, Controller
隨后將更改表的顯示並填充值。
這是我的意思:
view.tableEvent.setModel(model.getTableData());
但是,我試圖通過tableEvent.getColumnModel().getColumn(1).setPreferredWidth(60);
在Model
而不是在Views
設置列的寬度tableEvent.getColumnModel().getColumn(1).setPreferredWidth(60);
。 如果我將表本身傳遞給getTableData()
方法以設置列的寬度,則它實際上不起作用。 有沒有一種方法可以某種方式在geTableData()方法中的Model類中指定表的前4列的所需寬度,以使其始終保持一致。 現在,我在Views類的構造函數中擁有此函數,這顯然意味着僅在初始化時才達到我期望的寬度。
如果JTable
或TableModel
為空並且沒有列信息,那么您需要自己提供該信息。
您可以創建一個新的TableColumnModel
,將所需的TableColumns
添加到其中,提供所需的寬度信息,然后將該模型應用於JTable
。
然后,您需要填寫TableModel
並將其提供給JTable
。
我個人將嘗試從ResultSet
提取元數據,然后再嘗試從中獲取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.