我设计了一个Swing表单。它由JScrollPane
组成,其本身包含另一个JPanel
。由于某些UI事件,Component
会附加到此JPanel
。它就像一个消息框,消息在到达时会附加到列表中。
问题是如何对此JPanel
进行更改。为此,我简单地调用JFrame#pack()
方法。但是调用它会将我的框架调整为容器的大小,忽略我最初设置的prefferedSize, and maximumSize
边界。并且滚动条也不会变为可见,只是当组件被附加到面板时,框架的高度会变得更大。我希望我的Frame应该保持其初始大小,当组件的总大小超过帧的大小时,滚动条应该开始运行。我哪里错了?请帮忙。
这是我的初始屏幕:
此屏幕是添加组件的时间:
答案 0 :(得分:3)
向面板添加组件时,常规代码为:
panel.add(...);
panel.revalidate();
revalidate()方法将重新计算面板的首选大小。如果首选大小大于滚动窗格的大小,则会出现滚动条。
当然,您必须使用布局管理器才能自动执行此功能。