DefaultTableModel不显示列

时间:2015-02-09 22:54:42

标签: java swing jtable jscrollpane jtableheader

我遇到DefaultTableModel的问题,它不会在表格中显示我的列,有一部分代码:

JTable table = new JTable() {
        public boolean isCellEditable(int data, int columnNames) {
            return false;
        }
    };
    String columnNames[] = new String[] { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian", "asd", "asd" };
    DefaultTableModel dtm = new DefaultTableModel(0, 0);
    dtm.setColumnIdentifiers(columnNames);

    table.setModel(dtm);
for (Reservation r : reservation) {
        rez.add(new Reservation(r.getID(), r.getA(),    r.getB(), r.getC(), r.getD(), r.getE(), r.getF()));

    }

    for (int i = 0; i < rez.size(); i++) {
        int id = rez.get(i).getID();
        String l = rez.get(i).getA();
        String w = rez.get(i).getB();
        String z = rez.get(i).getC();
        String o = rez.get(i).getD();
        String d = String.valueOf(rez.get(i).getE());
        String g = rez.get(i).getF();
        dtm.addRow(new Object[] { id, l, w, z, d,o,g });

    }


    JScrollPane sp = new JScrollPane(dtm);
    add(table);

}

我试图制作动态表格。数据将来自使用hibernate的数据库(posgreSQL),这很好,它可以工作但是我看不到来自

的列名
String columnNames[] = new String[] { "First Name", "Last Name", "Sport", "# of Years", "Vegetarian", "asd", "asd" };

不要关心列的名称和吸气剂的名称我为此帖子更改了它。

另外,我无法滚动它:

JScrollPane sp = new JScrollPane(dtm);

2 个答案:

答案 0 :(得分:2)

将表格而不是TableModel添加到JScrollPane

add(new JScrollPane(table));

答案 1 :(得分:2)

我不确定这是如何编译的

JScrollPane sp = new JScrollPane(dtm);
add(table);

dtmDefaultTableModel的一个实例,因此永远不可能将其传递给JScrollPane

相反,你应该使用

JScrollPane sp = new JScrollPane(table);
add(sp);

有关详细信息,请参阅How to Use TablesHow to Use Scroll Panes