我不能让我的JTable显示任何东西

时间:2012-12-05 21:23:29

标签: java swing jtable jpanel jscrollpane

我不能让我的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

1 个答案:

答案 0 :(得分: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

  • 您没有将JTableJScrollPane)正确地添加到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 - try块内创建catch,之前准备此Object,最好是local variable < / p>

    2. 不要为XxxModel - JComponent块中的try创建catch,之前准备此Object,最好是local variable

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

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

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

    1. ResultSetTableModel

    2. Table From Database by @camickr