将JTable动态添加到JScrollPane

时间:2013-02-15 17:18:12

标签: java swing jtable jscrollpane

当用户提示我这样做时,我想要填充一个表格。问题是,我无法预测表最终会有多少行。在我的面板的构造函数中,将显示表格,我有

    // add empty scrollPane to JPanel which will later hold table
              scrollPane = new JScrollPane(); 
    add(scrollPane);

此类包含一个方法,当我想最终显示表

时将调用该方法
    public void displayTable(String[] columnNames, String[][] dataValues)
{
    table = new JTable(dataValues, columnNames);
    table.setPreferredScrollableViewportSize(new Dimension(300, 80)); 
    table.setFillsViewportHeight(true); 
    scrollPane.add(table);

    this.setVisible(true);
    scrollPane.repaint();

}

问题是,表格永远不会显示。我只看到ScrollPane里面没有桌子的轮廓。为什么不显示表格以及如何修复它?

3 个答案:

答案 0 :(得分:17)

您应该将组件添加到JScrollPane,而不是添加到其JViewport:

scrollPane.getViewport ().add (table);

答案 1 :(得分:5)

而不是将表添加到JScrollPane创建scrollpane的视口,然后将其视图设置为表。 改为使用以下代码:
scrollPane.setViewportView(table)

答案 2 :(得分:3)

通常,即使您还没有值,也可以同时创建JTableJScrollPane

最好使用您扩展的DefaultTableModelTableModel作为动态表格。