JScrollPane根据可用空间调整大小,但最大大小

时间:2013-04-14 06:23:29

标签: java swing jscrollpane

我在GridBagLayout中嵌入了一个JScrollPane。 大多数情况下,JScrollPane的内容小于可用空间。 在这种情况下,我希望JScrollPane完全符合它所需的大小。

例如,如果我有10行文本,总高度为100px,那么JScrollPane应该是100px,没有任何滚动条。 (这不一定是动态的,如果我可以设置最大尺寸,内容不会改变。)

只有当我调整JFrame的大小并且可用空间变得小于JScrollPane的内容时,我希望JScrollPane缩小并显示滚动条。

我尝试使用GridBagConstraints.fill参数。 这适用于调整大小到任何大小,但它也总是填充整个空间(如果使用fill参数,它应该做什么)。

如果我只是通过setPreferedSize()设置JScrollPane的大小而没有填充参数,并且Frame变得小于这个preferedSize,则scrollPane立即缩小到一个小块(因为我读到我不应该使用setPreferedSize方法( ?))。

我也尝试过具有首选和最小尺寸的BoxLayout,但如果可用空间小于首选尺寸,JScollPane会立即使用它的最小尺寸。

总结一下:我需要一个JScrollPane,它根据可用空间调整大小,但最多只能调整大小。

我必须使用哪些布局和设置才能获得所需的结果?

我正在努力解决这个问题,因为几个小时:(

修改

这里有一些截图:

Radio 1和2下方左侧的JScrollPane。

正常大小的帧,JScrollPane只使用它需要的空间: Normal size

如果我把它变大,那么JScrollPane不会改变(有效): Big Size

但是如果我使Frame比JScrollpane小,那么组件就搞乱了: Small Size as-is

我希望它看起来像: small size to-be

0 个答案:

没有答案