将JTable动态添加到JScrollPane

Mat*_*att 6 java swing jtable jscrollpane

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

    // add empty scrollPane to JPanel which will later hold table
              scrollPane = new JScrollPane(); 
    add(scrollPane);
Run Code Online (Sandbox Code Playgroud)

这个类包含一个方法,当我想最终显示表时将调用该方法

    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();

}
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*rov 17

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

scrollPane.getViewport ().add (table);
Run Code Online (Sandbox Code Playgroud)


Vis*_*l K 5

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