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

Controller类使用上面的方法来设置改变ClasstableEvent的状态。Views请注意tableEvent,视图中是空的/那里什么都没有。模型将值传递rsControllerwhich 将更改表格的显示并填充值。

这就是我的意思:

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

但是,我试图将列的宽度设置为 inModel而不是Viewsthrough tableEvent.getColumnModel().getColumn(1).setPreferredWidth(60);。如果我将表本身传递给方法getTableData()以设置列的宽度,它实际上并没有工作。有没有一种方法可以以某种方式在 getTableData() 方法中的 Model 类中指定我想要的表的前 4 列的宽度,以便它始终保持一致。现在我在 Views 类的构造函数的一部分有这个,这显然意味着它只在初始化时才达到我想要的宽度。

4

1 回答 1

1

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

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

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

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

于 2013-01-23T23:20:06.640 回答