Java JScrollPane,可根据可用空间调整大小,但仅限于最大大小

Java JScrollPane,可根据可用空间调整大小,但仅限于最大大小,java,swing,jscrollpane,Java,Swing,Jscrollpane,我在GridBagLayout中嵌入了一个JScrollPane。 大多数情况下,JScrollPane的内容小于可用空间。 在本例中,我希望JScrollPane的大小与它需要的大小完全相同 例如,如果我有10行文本,总高度为100px,那么JScrollPane应该是100px,没有任何滚动条。 (这不一定是动态的,如果我可以设置最大大小,内容就不会改变了。) 只有当我调整JFrame的大小,并且可用空间小于JScrollPane的内容时,我才希望JScrollPane收缩并显示滚动条 我尝

我在GridBagLayout中嵌入了一个JScrollPane。 大多数情况下,JScrollPane的内容小于可用空间。 在本例中,我希望JScrollPane的大小与它需要的大小完全相同

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

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

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

如果我只是通过setPreferedSize()设置JScrollPane的大小,而不使用fill参数,并且帧变得小于此preferedSize,滚动窗格会立即缩小为一小块(正如我所读到的,我无论如何都不应该使用setPreferedSize方法(?)

我也尝试过使用首选和最小大小的BoxLayout,但是如果可用空间小于首选大小,JScollPane会立即使用它的最小大小

总而言之:我需要一个JScrollPane,它可以根据可用空间调整大小,但只能达到最大大小

我必须使用什么布局和设置才能获得所需的结果

从几个小时以来,我一直在努力解决这个问题:(

编辑:

以下是一些屏幕截图:

收音机1和2下方左侧的JScrollPane

在正常大小的框架中,JScrollPane仅使用其所需的空间:

如果我将其放大,JScrollPane将不会改变(工程):

但是如果我使框架比JScrollpane小,组件就会弄乱:

我希望它看起来像什么:

使用支持细粒度控件的LayoutManager。不确定GridBag是否允许使用它-无论如何,您最好使用一个主要的第三方管理器,如MigLayout(我目前最喜欢的),FormLayout或designgridbag我希望使用标准布局管理器,但如果没有其他方法,我可以使用第三方管理器