java - 带有 DefaultTableModel 的简单 JTable

标签 java swing vector jtable defaulttablemodel

我使用 DefaultTableModel 作为我的 JTable 模型,但不显示我的表格!

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();
        }
    }
}
}

如何将 vector 引入DefaultTableModel

输出仅显示一个空白的 JFrame

最佳答案

在构造函数的第一个语句处添加以下内容:

super(data,column);

并将datacolumn声明为静态

关于java - 带有 DefaultTableModel 的简单 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18293693/

相关文章:

java - 为什么Java的类型推断这么弱?

java - 如何在Java Swing中制作按钮点击 block ?

java - 如何删除 JFormattedTextField 中的空格?

C++ 初始化 std::vector<std::unique_ptr<AbstractClass>>

java - jmeter中如何实现csv文件的多个http请求?

java - 如何制作一个可以覆盖任何屏幕的按钮?

Java:nio WatchService - 无法检测第二个文件的创建。为什么?

Java JFrame 不更新按钮的设置

c++ - std::vector 的时间/内存高效工作

c++ - 带有静态 std::vector 的内存泄漏(有点)