类似这个问题:Dynamically adding JTable to JScrollPane
我试图在每次用户单击按钮时添加 JTable。首先,我的问题与那个问题相同;什么都不会显示,一旦我使用 getViewport,我就可以让它显示,但现在我看不到任何按钮。
我应该在每个 JTable 的上方和下方都有按钮。 (它们也在滚动 Pane 中。我猜测它们已被删除,因为 getViewport 将获取整个滚动 Pane (我可以看到)并将我的 JTable 放在上面)。
为什么需要getViewport()?例如,如果我只需将 JTable 更改为 JButton,我就可以轻松地执行我想要的操作。
此外,如果我将按钮移动到滚动 Pane 之外,然后单击添加另一个 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();
}
最佳答案
看起来 JTable 必须单独位于滚动 Pane 中。
因此,要解决该问题,不要将 JTable 添加到面板中,而是首先将其添加到新的 JScrollPane 中,然后将该滚动 Pane 添加到面板中。验证并重新绘制,它将起作用。
查看代码片段:
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?来解决这个问题。
关于java - 动态地将 JTable 添加到 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30747687/