首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向JScrollPane动态添加JTables

向JScrollPane动态添加JTables
EN

Stack Overflow用户
提问于 2015-06-10 13:22:00
回答 1查看 394关注 0票数 1

类似于这个问题:Dynamically adding JTable to JScrollPane

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

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

为什么有必要使用getViewport()?例如,如果我简单地将JTable更改为JButton,我就可以轻松地做我想做的事情。

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

总结一下:如何在JScrollPane中使用按钮将JTables添加到相同的JScrollPane中?

谢谢你的帮助。

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

代码语言:javascript
复制
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();
    }
EN

回答 1

Stack Overflow用户

发布于 2015-06-11 07:50:05

似乎JTable必须单独出现在滚动窗格中。

因此,要解决这个问题,不是将JTable添加到面板,而是首先将其添加到新的JScrollPane,然后将滚动窗格添加到面板。验证并重绘,它就可以工作了。

请参阅代码片段:

代码语言:javascript
复制
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?来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30747687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档