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类使用上述方法来设置tableEvent类的Views的状态更改。请注意,视图中的tableEvent为空/无。模型将rs的值传递给Controller,这将更改表的显示并填充值。

这是我的意思:

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

但是,我试图在Model中而不是在ViewstableEvent.getColumnModel().getColumn(1).setPreferredWidth(60);中设置列的宽度。如果我将表本身传递给方法getTableData()以设置列的宽度,则它实际上不起作用。有没有一种方法可以某种方式在geTableData()方法中的Model类中指定表的前4列的所需宽度,以使其始终保持一致。现在,我在Views类的构造函数中拥有此函数,这显然意味着仅在初始化时才达到我期望的宽度。

最佳答案

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

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

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

我个人将尝试从ResultSet中提取元数据,然后再尝试从中提取数据。

10-01 05:58
查看更多