2013-08-17 50 views
1

我使用DefaultTableModel为我的JTable模型,但不显示我的表!简单JTable与DefaultTableModel

public class RecordTableGUI2 extends JFrame { 

JTable table; 
RecordTableModel2 model2; 

public RecordTableGUI2() { 
    model2 = new RecordTableModel2(); 
    table = new JTable(model2); 

    add(new JScrollPane(table), BorderLayout.CENTER); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setSize(400, 500); 
    setVisible(true); 
} 

public static void main(String[] args) { 
    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      new RecordTableGUI2(); 
     } 
    }); 
} 
} 

模型类:

public class RecordTableModel2 extends DefaultTableModel { 
Connection con; 
Statement statement; 
ResultSet result; 
String dbUrl = "jdbc:mysql://localhost/mydb"; 
String query = "Select * from mytable"; 
Vector data = new Vector(); 
Vector column = new Vector(); 


public RecordTableModel2() { 
    try { 
     con = DriverManager.getConnection(dbUrl, "root", "2323"); 
     statement = con.createStatement(); 
     result = statement.executeQuery(query); 

     int c = result.getMetaData().getColumnCount(); 
     for (int i = 1; i <= c; i++) { 
      column.add(result.getMetaData().getColumnName(i)); 
      System.out.println(result.getMetaData().getColumnName(i)); //prints correct 
     } 

     while (result.next()) { 
      Vector eachRow = new Vector(c); 
      for (int i = 1; i <= c; i++) { 
       eachRow.add(result.getString(i)); 
       System.out.println(result.getString(i)); //prints correct 
      } 
      data.add(eachRow); 
     } 

    } catch (SQLException sqle) { 
     sqle.printStackTrace(); 
    } finally { 
     try { 
      if (con != null) { 
       con.close(); 
      } 
      if (statement != null) { 
       statement.close(); 
      } 
     } catch (SQLException sqlee) { 
      sqlee.printStackTrace(); 
     } 
    } 
} 
} 

如何引入向量DefaultTableModel

输出只显示一个空白的JFrame

+0

这是越来越讨厌。 2周前,我给你提供了关于如何将数据从数据库加载到DefaultTableModel的代码。为什么你很难听到这个建议?你到底在哪里添加数据和列名到DefaultTableModel? DefaultTableModel不知道你的数据/列向量。再看看我给你的代码。从工作代码开始,然后进行更改,如果它没有做到你想要的! – camickr

+0

@camickr是的,我不知道如何将我的向量引入'DefaultTableModel'? – Sajad

+0

Edxactly,你创建的向量,然后你使用向量创建DefaultTableModel。我向你展示了如何在其他文章中创建矢量。然后使用该模型创建JTable。 – camickr

回答

0

在构造函数的第一个语句补充一点:

super(data,column); 

,并宣布datacolumn静态

相关问题