2013-12-17 32 views
0

这是我在DataAccessLayer中创建表的“创建”代码。jTable - 如何显示只显示有限的列? Java

private TableModel getResultSetAsDefaultTableModel(ResultSet rs) { 

    try { 

     String[] columnHeadings = new String[0]; 
     Object[][] dataArray = new Object[0][0]; 

     ResultSetMetaData md = rs.getMetaData(); 
     int columnCount = md.getColumnCount(); 

     for (int i = 1; i <= columnCount; i++) { 
      String columnName = md.getColumnName(i); 
      columnHeadings = Arrays.copyOf(columnHeadings, columnHeadings.length + 1); 
      columnHeadings[i - 1] = columnName; 
     } 

     int r = 0; 

     while (rs.next()) { 

      Object[] row = new Object[columnCount]; 
      for (int i = 1; i <= columnCount; i++) { 
       row[i - 1] = rs.getObject(i); 
      } 

      dataArray = Arrays.copyOf(dataArray, dataArray.length + 1); 
      dataArray[r] = row; 

      r++; 
     } 

     DefaultTableModel dtm = new DefaultTableModel(dataArray, columnHeadings) { 
      public boolean isCellEditable(int row, int column) { 

       return false; 
      } 
     }; 

     return dtm; 

    } catch (SQLException ex) { 

     Logger.getLogger(Dataaccesslayer.class.getName()).log(Level.SEVERE, null, ex); 
    } 

    return null; 

} 

**这导致一些并发症,因为我的一个表有50个不同的列,因此,您无法读取COLUMNNAMES或什么是在细胞中。

的问题是,表中的值由元数据确定...

我想限制被显示为所有表的具体数量(5)列。 我怎么办呢?**

亲切的问候,

克里斯

回答

0

你可以删除表,如果你想...

int amountColumns = table.getColumnModel().getColumnCount(); //count columns 
TableColumn c6 = table.getColumnModel().getColumn(6); //identif a random column 
table.getColumnModel().removeColumn(c6); //remove this column 

我希望帮助...

0

我不会删除它们,但将它们的大小更改为0.

int amountColumns = table.getColumnModel().getColumnCount(); //count columns 
TableColumn c6 = table.getColumnModel().getColumn(6); //identif a random column 
table.getColumnModel().setMin(0); 
table.getColumnModel().setMax(0); 
table.getColumnModel().setPreferredWidth(0); 

像我回答你在你的其他线程...

+0

还有另一个线程?! ouh,然后让我们关闭这个!你可以保留吗? (我认为我还不能,或者,我可以吗?) –

+0

是在这里:http://stackoverflow.com/questions/20655197/jtable-in-gui-java-does-not-show-all-data-from-database - 错误 - 在-的TableModel。我无法设置:拥有3000名声望的用户每天最多可以投50票。当问题达到5票时,它被标记为[搁置],并且不再接受答案。 – dehlen

+0

rtfm,哈哈,对,我现在自己找到了,现在^^多么可惜,重复应该更容易标记 –