动态添加JTable到JScrollPane

问题描述 投票:0回答:4

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

    // 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 所在位置的轮廓,内部没有表格。 为什么表格不显示以及如何修复它?

java swing jtable jscrollpane
4个回答
20
投票

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

scrollPane.getViewport ().add (table);

5
投票

不要将表格添加到 JScrollPane,而是创建一个滚动窗格的视口,然后将其视图设置为表格。 使用以下代码代替:

scrollPane.setViewportView(table)


3
投票

通常,您会一起创建

JTable
JScrollPane
,即使您还没有值。

对于动态表,最好使用 DefaultTableModel 或您扩展的

TableModel


0
投票

当我将表格添加到 JscrollPane 并调整其视图端口大小后没有滚动条时,设置自动调整大小模式关闭也对我有所帮助。

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
© www.soinside.com 2019 - 2024. All rights reserved.