与此问题类似: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();
}
答案 0 :(得分:0)
似乎JTable本身必须位于滚动窗格中。
因此,要解决此问题,请先将其添加到新的JScrollPane,然后将该滚动窗格添加到面板中,而不是将JTable添加到面板中。验证并重新绘制,它将起作用。
请参阅代码段:
setRequestHeader
唯一的问题是如果鼠标悬停在任何表上,则表格列表不会滚动。请参阅此处:Why JScrollPane does not react to mouse wheel events?以解决此问题。