动态地向JScrollPane添加JTables



类似于这个问题:动态地将JTable添加到JScrollPane

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

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

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

同样,如果我将按钮移动到滚动面板的外部,然后单击以添加另一个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();
    }

似乎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();
}

唯一的问题是,如果鼠标在任何表格上,表格列表将不会滚动。为什么JScrollPane不响应鼠标滚轮事件?

相关内容

  • 没有找到相关文章

最新更新