Java Swing:动态添加jpanels不可见

时间:2016-04-26 19:57:01

标签: java swing jpanel jscrollpane flowlayout

我正在尝试动态添加新的jpanel(通过按JButton在JScrollPane中维度250x500_ .JScrollPane的宽度为1024,略多于4个JPanel。

对于4次首次JButton点击,正常插入4个JPanel。 如果我单击该按钮并且第5次然后JScrollPane增长(垂直条变得可见并创建一些空间,jpanel下的数据也是正确的)但不幸的是,新的JPanel不可见。

如果我点击JButton并且第6次,那么JScrollPane会增长更多,第5张JPanel会变得可见(并继续...)

有关为何会发生这种情况的任何建议? (我在JScrollPane中使用流布局)

编辑:显然我已经使用验证和重绘方法,因为正如我上面所写,jpanel在5次中可见4次...问题在于第5次点击新JPanel不适合现有的JScroll并且它没有出现(由于JScroll变得越来越大)。在第6次点击中,第5张JPanel出现并继续......

在理解之前请不要批评..谢谢

1 个答案:

答案 0 :(得分:1)

创建时组件的大小为(0,0)。在组件具有大小和位置之前,需要调用布局管理器。

将组件动态添加到可见GUI的基本代码是:

panel.add(...);
panel.revalidate(); // to invoke the layout managers
panel.repaint(); // sometimes needed

如果这没有帮助,请发布一个显示问题的正确SSCCE