将JTable动态添加到JScrollPane

时间:2015-06-10 05:22:00

标签: java swing user-interface jtable jscrollpane

与此问题类似:Dynamically adding JTable to JScrollPane

每次用户点击按钮时,我都会尝试添加JTable。首先,我的问题与那个问题相同;什么都不会显示,一旦我使用了getViewport我可以让它显示,除了现在我看不到任何我的按钮。

我应该在每个JTable的上方和下方都有按钮。 (它们也在滚动窗格中。我猜它们被移除了,因为getViewport将获得整个滚动窗格(我可以看到)并将我的JTable放在那里)。

为什么需要getViewport()?如果我只是为JButton更改JTable,我可以很容易地做我想要的。

此外,如果我将按钮移动到滚动窗格外部,然后单击以添加另一个JTable,看起来它什么都不做。我假设它只是继续将JTable放在前一个JTable上。

总结一下:我如何使用JScrollPane中的按钮将JTable添加到同一个JScrollPane?

感谢您的帮助。

编辑:用户点击按钮时发生的操作: 按钮工作正常,每次点击都会添加,但不会出现任何表格。

public void actionPerformed(ActionEvent e)
    {
        JTableList.add(new JTable(getModel()));
        panelClass.this.panel.add(JTableList.get(JTableList.size()-1));
        panelClass.this.panel.add(new JButton("test"));

        panelClass.this.validate();
        panelClass.this.repaint();
    }

1 个答案:

答案 0 :(得分:0)

似乎JTable本身必须位于滚动窗格中。

因此,要解决此问题,请先将其添加到新的JScrollPane,然后将该滚动窗格添加到面板中,而不是将JTable添加到面板中。验证并重新绘制,它将起作用。

请参阅代码段:

setRequestHeader

唯一的问题是如果鼠标悬停在任何表上,则表格列表不会滚动。请参阅此处:Why JScrollPane does not react to mouse wheel events?以解决此问题。