类似于这个问题:Dynamically adding JTable to JScrollPane
每次用户单击按钮时,我都会尝试添加一个JTable。首先,我的问题和那个问题一样;什么都不显示,一旦我使用了getViewport,我就可以让它显示出来,除了现在我看不到我的任何按钮。
我应该在每个JTable的上面和下面都有按钮。(它们也在滚动窗格中。我猜测它们被删除是因为getViewport将获得整个滚动窗格(我可以看到),并将我的JTable放在上面)。
为什么有必要使用getViewport()?例如,如果我简单地将JTable更改为JButton,我就可以轻松地做我想做的事情。
此外,如果我将按钮移到滚动窗格之外,然后单击以添加另一个JTable,则看起来它什么也不做。我假设它只是不断地将另一个JTable放在前一个上。
总结一下:如何在JScrollPane中使用按钮将JTables添加到相同的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();
}发布于 2015-06-11 07:50:05
似乎JTable必须单独出现在滚动窗格中。
因此,要解决这个问题,不是将JTable添加到面板,而是首先将其添加到新的JScrollPane,然后将滚动窗格添加到面板。验证并重绘,它就可以工作了。
请参阅代码片段:
public void actionPerformed(ActionEvent e)
{
JTableList.add(new JTable(getModel()));
JScrollPane tableContainer = new JScrollPane(JTableList.get(JTableList.size()-1));
panelClass.this.panel.add(tableContainer);
panelClass.this.panel.add(new JButton("test"));
panelClass.this.validate();
panelClass.this.repaint();
}唯一的问题是,如果鼠标停留在任何一个表格上,表格列表就不会滚动。请看这里:Why JScrollPane does not react to mouse wheel events?来解决这个问题。
https://stackoverflow.com/questions/30747687
复制相似问题