Java 防止jscrollpane内的组件延伸超过水平边缘

Java 防止jscrollpane内的组件延伸超过水平边缘,java,swing,user-interface,jscrollpane,matisse,Java,Swing,User Interface,Jscrollpane,Matisse,在我正在做的一个项目中,我在JFrame中有一组用JPanel包装的JTextPane。当编程实际运行时,JTextPane的大小可以是各种各样的,并且不能预测它们的大小,除非它是硬编码的。为了确保所有JTextPane(在jpanel中)都是可查看的,我将所有内容都放在滚动窗格中。这里有一个陷阱:如果需要,我希望JTextPane扩展到JScrollPane的底部,但我不希望它们扩展到侧面。我还希望JPanels/JTextPane在水平方向上占据尽可能多的空间,而不需要使用水平滚动条。这意味

在我正在做的一个项目中,我在JFrame中有一组用JPanel包装的JTextPane。当编程实际运行时,JTextPane的大小可以是各种各样的,并且不能预测它们的大小,除非它是硬编码的。为了确保所有JTextPane(在jpanel中)都是可查看的,我将所有内容都放在滚动窗格中。这里有一个陷阱:如果需要,我希望JTextPane扩展到JScrollPane的底部,但我不希望它们扩展到侧面。我还希望JPanels/JTextPane在水平方向上占据尽可能多的空间,而不需要使用水平滚动条。这意味着,如果水平调整窗口的大小,JTextPanes需要调整大小以填充水平空间。JTextPanes首先包装在使用Netbeans GUI builder提供的“GroupLayout”的面板中,然后包装在使用BoxLayout的面板中。之所以使用BoxLayout,是因为我通过代码向它添加了新元素(JTextPane包装在一个面板中)。使用BoxLayout执行此操作要容易得多

我尝试将JTextPane的preferred width设置为
Integer.MAX_VALUE
,但这只会导致它们向右扩展到站点之外。然后我尝试禁用水平滚动条,但JTextPanes仍然向右扩展。现在我甚至无法滚动查看它们!最后,我尝试在JFrame调整大小时使用事件捕捉,然后调用方法使树中的所有内容都调整大小。但这似乎根本不起作用。为此,我尝试将每个JTextPane的首选宽度设置为JFrame的首选宽度,但似乎没有任何效果

下面是如果将内部JTextPane的宽度设置为
427
,它会是什么样子:

如果我将JTextPane的大小保留为“Default”(我认为是
Integer.MAX\u VALUE
),我得到的是:


如果有必要,我使用的是Netbeans GUI builder(Matisse),因此我更喜欢不涉及更改布局管理器的解决方案,但我愿意接受。请注意,正如我上面所说,BoxLayout在一些面板中使用,它实际上是问题的一部分。

您能提供一些屏幕截图吗?一张图片告诉你一千个单词,你可能需要在面板上使用GridBagLayout,并确保文本窗格使用水平填充约束。如果您需要更多帮助,请发布一篇演示问题的文章。@OliverWatkins我添加了屏幕截图。我在做一个SSCCE