6

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

    // 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 所在位置的轮廓,里面没有表格。为什么表格不显示,我该如何解决?

4

3 回答 3

19

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

scrollPane.getViewport ().add (table);
于 2013-02-15T17:29:16.927 回答
5

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

于 2013-02-15T17:30:14.947 回答
3

通常,您会一起创建 theJTable和 the JScrollPane,即使您还没有任何值。

最好将DefaultTableModelTableModel您扩展的用于动态表。

于 2013-02-15T17:35:57.930 回答