Java 如何从jList更改为JTable(数据库中的数据有许多列和行)

Java 如何从jList更改为JTable(数据库中的数据有许多列和行),java,sql,swing,jtable,Java,Sql,Swing,Jtable,我会尽力解释清楚的。我是个笨蛋,几个小时来一直在努力解决这个问题 我制作了一个Java应用程序,它显示它所连接的数据库中的数据。(ODBC/Microsoft SQL) 当我为应用程序制作GUI时,我决定在jList中显示数据 然后我意识到信息太多,我需要列名等(因此是jTable) 我想做的是更改,使数据显示在jTable中,而不是jList中。但是我不知道怎么做。 这就是代码目前的样子: GUI private void jComboBox1_actionPerformed(Action

我会尽力解释清楚的。我是个笨蛋,几个小时来一直在努力解决这个问题

  • 我制作了一个Java应用程序,它显示它所连接的数据库中的数据。(ODBC/Microsoft SQL)

  • 当我为应用程序制作GUI时,我决定在jList中显示数据

  • 然后我意识到信息太多,我需要列名等(因此是jTable)

我想做的是更改,使数据显示在jTable中,而不是jList中。但是我不知道怎么做。

这就是代码目前的样子:

GUI

private void jComboBox1_actionPerformed(ActionEvent e)throws SQLException {

    String selected = jComboBox1.getSelectedItem().toString();
     String[]tmp = conn.showTable1(selected);
    jList1.setListData(tmp);

}
控制器

public String[] showTable1(String table)throws SQLException {
    ArrayList<String> list1 = dal.showTable1(table);
    return list1.toArray(new String[list1.size()]);
 }
public ArrayList<String> showTable1(String table)throws SQLException {
    ArrayList<String> list1 = new ArrayList<String>();

    Statement stmt = con.createStatement();
    String query1 = "select * from [" +table+"]";
        System.out.println(query1);
    ResultSet rset = stmt.executeQuery(query1);
    ResultSetMetaData rsmd = rset.getMetaData();
    while (rset.next()) {
        String result = "";

        for(int i = 1; i < rsmd.getColumnCount(); i++) {
            result += rset.getString(i) + "\t" + "\t";
   //     
        }
            list1.add(result);
        }

    return list1;

    }
public String[]showTable1(字符串表)抛出SQLException{
ArrayList list1=dal.showTable1(表);
返回list1.toArray(新字符串[list1.size()]);
}
数据访问层

public String[] showTable1(String table)throws SQLException {
    ArrayList<String> list1 = dal.showTable1(table);
    return list1.toArray(new String[list1.size()]);
 }
public ArrayList<String> showTable1(String table)throws SQLException {
    ArrayList<String> list1 = new ArrayList<String>();

    Statement stmt = con.createStatement();
    String query1 = "select * from [" +table+"]";
        System.out.println(query1);
    ResultSet rset = stmt.executeQuery(query1);
    ResultSetMetaData rsmd = rset.getMetaData();
    while (rset.next()) {
        String result = "";

        for(int i = 1; i < rsmd.getColumnCount(); i++) {
            result += rset.getString(i) + "\t" + "\t";
   //     
        }
            list1.add(result);
        }

    return list1;

    }
public ArrayList showTable1(字符串表)抛出SQLException{
ArrayList list1=新的ArrayList();
语句stmt=con.createStatement();
String query1=“从[“+表格+”]中选择*”;
系统输出打印项次(查询1);
结果集rset=stmt.executeQuery(查询1);
ResultSetMetaData rsmd=rset.getMetaData();
while(rset.next()){
字符串结果=”;
对于(int i=1;i
请帮忙

问候,Chris

请看以下几个简单的建议:

  • 在web上搜索现有的
    ResultSetTableModel
  • 使用数据库示例中的
  • 使用博客中提供的ListTableModel

  • 1.公共结果集问题模型(结果集rs){this(rs,0);}2。ListTableModel模型=ListTableModel.createModelFromResultSet(resultSet);JTable table=新的JTable(模型);我没有得到它,因为我有组合框。当我在组合框中选择一个字符串时,它会自动在jList中显示数据。@Chris,我不理解你的评论。组合框仅用于构建SQL查询。一旦您有了一个结果集,您就可以创建一个TableModel并在JTable中显示数据。JTable的结构与db中的table非常相似,rest在Oracle教程-如何使用表中进行了描述