Java JFrame已调整大小,滚动条不可见

Java JFrame已调整大小,滚动条不可见,java,swing,Java,Swing,我设计了一个秋千。它由一个本身包含另一个JPanel的JScrollPane组成。由于某些UI事件,组件被追加到此JPanel。它就像一个消息框,消息到达时会被追加到列表中。 问题是如何使此JPanel的更改可见。为了实现这一点,我简单地调用JFrame#pack()方法。但是调用此函数会将帧的大小调整为容器的大小,忽略我最初设置的preferedSize和maximumSize绑定。滚动条也不可见,只是随着组件附加到面板上,框架的高度会变大。我希望我的框架应该保持其初始大小,当组件的总大小超过

我设计了一个秋千。它由一个本身包含另一个
JPanel
JScrollPane
组成。由于某些UI事件,
组件
被追加到此
JPanel
。它就像一个消息框,消息到达时会被追加到列表中。 问题是如何使此
JPanel的更改可见。为了实现这一点,我简单地调用
JFrame#pack()
方法。但是调用此函数会将帧的大小调整为容器的大小,忽略我最初设置的
preferedSize和maximumSize
绑定。滚动条也不可见,只是随着组件附加到面板上,框架的高度会变大。我希望我的框架应该保持其初始大小,当组件的总大小超过框架的大小时,滚动条应该开始工作。我哪里做错了?请帮忙。 这是我的初始屏幕:

添加组件时显示此屏幕:

将组件添加到面板时,一般代码为:

panel.add(...);
panel.revalidate();
方法将重新计算面板的首选大小。如果首选大小大于滚动窗格的大小,则会显示滚动条


当然,您必须使用布局管理器才能自动实现此功能。

您可以添加一个屏幕截图吗?代码在哪里,您已经解释了理论部分。请提供代码。@ProphesyWaitis我正在使用netbeans IDE。代码是由IDE生成的,我应该上传吗?你能解释一下为什么
JFrame#pack()
忽略
maximumSize
?@Sanjay取决于使用的LayoutManager,除了BoxLayout之外,大多数都忽略了XxxSize