2013-07-18 37 views
1

每次我实现数据库查看器时,我都有一些函数来填充表格并调整列大小。我希望找到现成的组件,它可以查看查询结果,还可以对表格中的条目进行排序,编辑,并自动调整与数据相关的列大小。我想使用元数据来自动定义实体的类型。我将通过的唯一事情就是查询的ResultSet,组件将完成剩下的工作。任何想法?Database-JTable Interaction

我迄今所做的:

private static DefaultTableModel buildTableModel(ResultSet rs) throws SQLException { 

    ResultSetMetaData metaData = rs.getMetaData(); 

    // names of columns 
    Vector<String> columnNames = new Vector<String>(); 
    int columnCount = metaData.getColumnCount(); 
    for (int column = 1; column <= columnCount; column++) { 
     columnNames.add(metaData.getColumnName(column)); 
    } 

    // data of the table 
    Vector<Vector<Object>> data = new Vector<Vector<Object>>(); 
    while (rs.next()) { 
     Vector<Object> vector = new Vector<Object>(); 
     for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) { 
      vector.add(rs.getObject(columnIndex)); 
     } 
     data.add(vector); 
    } 

    return new DefaultTableModel(data, columnNames); 

} 

public static void showResult(ResultSet rs) throws SQLException{ 
    //creates the table 
    JTable table = new JTable(buildTableModel(rs)); 
    table.setEnabled(false); 

    //abjust table size 
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
    TableColumnAdjuster tca = new TableColumnAdjuster(table);//the class for adjusting the column size 
    tca.adjustColumns();  

    //JFrame 
    JFrame view = new JFrame("View"); 
    view.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

    //add to frame 
    JScrollPane pane = new JScrollPane(table); 
    view.add(pane); 

    //settings 
    view.setVisible(true); 
    view.setSize(table.getWidth(), 400); 
} 

同时,我有一个类,调整列大小。

回答

0
To sort records use order by Clause to query you fire to get all records. 
Use TableColumnModel to set column size. 
Here is the code 


//Your Edit Code 
rs=st.executeQuery("select * from ManageVendor order by SName"); 
      table.setModel(buildTableModel(rs)); 
      TableColumnModel tcm=table.getColumnModel(); 
      tcm.getColumn(0).setPreferredWidth(50); 
      tcm.getColumn(1).setPreferredWidth(200); 
      tcm.getColumn(2).setPreferredWidth(150); 
      tcm.getColumn(3).setPreferredWidth(60); 
      tcm.getColumn(4).setPreferredWidth(50); 
      tcm.getColumn(5).setPreferredWidth(250); 
相关问题