gpt4 book ai didi

java - 从另一个类设置 JTable 列宽度

转载 作者:行者123 更新时间:2023-12-01 14:53:57 25 4
gpt4 key购买 nike

    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 类的一个方法,负责为我在 View 中名为 tableEvent 的表设置表模型。

Controller类使用上述方法来设置改变Views类的tableEvent的状态。请注意, View 中的 tableEvent 为空/什么都没有。模型将 rs 的值传递给 Controller,然后 Controller 将更改表的显示并填充值。

这就是我的意思:

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

但是,我尝试通过 tableEvent.getColumnModel().getColumn(1) 在 Model 中设置列​​的宽度,而不是在 Views 中。设置首选宽度(60);。如果我将表本身传递给方法 getTableData() 来设置列的宽度,它实际上不起作用。有没有一种方法可以在 geTableData() 方法的 Model 类中以某种方式指定表格前 4 列的所需宽度,以便它始终保持一致。现在我在 Views 类的构造函数的一部分中有这个,这显然意味着它仅在初始化时达到我想要的宽度。

最佳答案

如果 JTableTableModel 为空并且没有列信息,则您需要自己提供该信息。

您可以创建一个新的 TableColumnModel,向其中添加所需的 TableColumns,提供您想要/需要的宽度信息,然后将该模型应用到 JTable .

然后,您需要填写 TableModel 并将其提供给 JTable

我个人会在尝试从中检索数据之前从 ResultSet 中提取元数据。

关于java - 从另一个类设置 JTable 列宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14491184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com