我设计了一个Swing窗体。它由一个本身包含另一个JPanel的JScrollPane组成。由于某些UI事件,将在此JPanel中附加一个Component。它就像一个消息框,当消息到达时,消息会被附加到列表中。问题是如何使此JPanel上的更改可见。为了实现这一点,我只需调用JFrame#pack()方法。但是调用它会将框架的大小调整为容器的大小,而忽略我最初设置的prefferedSize, and maximumSize界限。滚动条也不会变得可见,只是当组件被附加到面板上时,框架的高度会变大。我希望我的框架应该保持在其初始大小,滚动条应该开始行动,当组件的总大小超过框架的大小。我哪里错了?请帮帮忙。这是我的初始屏幕:

此屏幕是添加组件时的屏幕:

发布于 2011-12-21 14:15:08
向面板添加组件时,一般代码为:
panel.add(...);
panel.revalidate();revalidate()方法将重新计算面板的首选大小。如果首选大小大于滚动窗格的大小,则会出现滚动条。
当然,您必须使用布局管理器才能自动实现此功能。
https://stackoverflow.com/questions/8585687
复制相似问题