Java 从另一个类设置JTable列宽
上面是Model类的一个方法,负责为我在名为Java 从另一个类设置JTable列宽,java,swing,user-interface,jtable,tablemodel,Java,Swing,User Interface,Jtable,Tablemodel,上面是Model类的一个方法,负责为我在名为tableEvent的视图中的表设置表模型 控制器类使用上述方法设置更改视图类的tableEvent的状态。请注意视图中的tableEvent为空/没有任何内容。模型将rs的值传递给控制器,然后控制器将更改表的显示并填充值 我的意思是: view.tableEvent.setModel(model.getTableData()) 但是,我试图通过tableEvent.getColumnModel().getColumn(1).setPreferredW
tableEvent
的视图中的表设置表模型
控制器类使用上述方法设置更改视图
类的tableEvent
的状态。请注意视图中的tableEvent
为空/没有任何内容。模型将rs
的值传递给控制器
,然后控制器将更改表的显示并填充值
我的意思是:
view.tableEvent.setModel(model.getTableData())代码>
但是,我试图通过tableEvent.getColumnModel().getColumn(1).setPreferredWidth(60)在Model
中设置列的宽度,而不是在视图中设置列的宽度代码>。如果我将表本身传递给方法getTableData()
,以设置列的宽度,那么它实际上不起作用。是否有一种方法可以指定geTableData()方法中模型类中表的前4列的所需宽度,以便它始终保持一致。现在我在Views类的构造函数中看到了这个,这显然意味着它只有在初始化时才达到我想要的宽度 如果JTable
或TableModel
为空且没有列信息,则您需要自己提供该信息
您可以创建一个新的TableColumnModel
,向其中添加所需的TableColumns
,提供所需的宽度信息,并将该模型应用于JTable
然后您需要填写表格模型
,并将其提供给JTable
我个人会先从ResultSet
中提取元数据,然后再尝试从中检索数据。您可以看到上面的方法正在返回模型,其中包括视图中的表已经使用的列。那么,如何在返回时将列大小与其关联呢?我假设您返回的是TableModel
,它只包含列信息的名称和数量。JTable
使用该信息自动生成列(默认情况下,您可以对此进行更改)。您还需要以某种方式提供TableColumnModel
。我将更改方法以返回您自己的模型,其中包含TableModel
和TableColumnModel
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;
}