1

我无法让我的 gui 显示 Jtable,为什么我不知道并且我没有收到任何错误,当我在屏幕上打印某些内容时,我得到 9 列。所以我得到数据。但我做错了什么我对此一无所知。

我的 GUIOdreHandler 看起来像这样

public GUIOrdreHandler(){

            KaldSQL ks = new KaldSQL();
            ResultSet rs;

        }

        public static DefaultTableModel buildTableModel(ResultSet rs)
                throws SQLException {

            java.sql.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));
                System.out.println(columnCount);
            }

            // 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);

            }

我的 GUIHentOrdre 看起来像这样

public GUIHentOrdre(){

        try {
            con = ks.connectNow();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        JPanel info = new JPanel();
        info.setLayout(new BorderLayout());
        button = new JButton("button");
        info.add(button, BorderLayout.CENTER);
        add(button);
        ResultSet rs = ks.Hentalleordreliste(con);
        GUIOrdreHandler gh = new GUIOrdreHandler();

        try {
            table = new JTable(gh.buildTableModel(rs));

            System.out.println(table);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        info.add(table, BorderLayout.CENTER);
        add(table);
    }
}

我已经尝试过任何谷歌,书北工程,所以请帮助我:D

4

1 回答 1

1

仅关于您的代码中的错误

JPanel info = new JPanel();
info.setLayout(new BorderLayout());
button = new JButton("button");
info.add(button, BorderLayout.CENTER);
add(button);
  • 删除关于add(button);的代码行(代码不完全在谈论)

  • 更改info.add(button, BorderLayout.CENTER);NORTHSOUTH

  • 您没有正确添加JTable(in JScrollPane)JPanel

伪代码

JPanel info = new JPanel();
info.setLayout(new BorderLayout());
button = new JButton("button");
info.add(button, BorderLayout.SOUTH);
JTable table = new JTable (ClassOrVoidOrModelNameReturnsTableModel)
JScrollPane scroll = new JScrollPane(table)
info.add(scroll, BorderLayout.CENTER);
  • 但这上面没有什么可以解决的,因为你的问题应该是一些异常来自JDBC

    1. 不要在-块JComponent内创建 s ,之前准备好这个,更好的可能是trycatchObjectlocal variable

    2. 不要在里面创建XxxModelfor JComponents try-catch块,Object之前准备好这个,更好的可能是local variable

    3. 初始化XxxModel及其 JComponent,然后将数据加载JDBCXxxModel

    4. 添加rs.close()finally块(try- catch- finally

  • 不要重新发明轮子,使用

    1. 结果集表模型

    2. @camickr 来自数据库的表

于 2012-12-05T22:01:27.760 回答