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

时间:2014-10-09 11:11:46

标签: java swing user-interface jscrollpane matisse

在我正在做的项目中,我有一组JTextPane包装在JFrame中的JPanels中。当编程实际运行时,JTextPane可以是各种大小,除非它是硬编码的,否则无法预测它们的大小。为了确保所有JTextPane(在JPanel内部)都是可见的,我已将所有内容放在滚动窗格中。这里有一个问题:如果需要,我希望JTextPane扩展到JScrollPane的底部,但是我不希望它们扩展到一边。我还希望JPanels / JTextPanes占用尽可能水平的空间,不需要使用水平滚动条。这意味着如果窗口水平调整大小,则JTextPanes需要调整大小以填充水平空间。 JTextPanes首先包含在一个面板中,该面板使用随Netbeans GUI构建器提供的“GroupLayout”,然后在使用BoxLayout的面板中。它是BoxLayout的原因是我通过代码添加新元素(JTextPane包含在面板中)。使用BoxLayout更容易做到这一点。

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

如果我将内部JTextPane的宽度设置为427,这就是它的样子: enter image description here

如果我将JTextPane的大小保留为“Default”(我认为是Integer.MAX_VALUE),这就是我所拥有的: enter image description here

如果它很重要,我正在使用Netbeans GUI构建器(Matisse),所以我更喜欢不涉及更改布局管理器的解决方案,但我会对此持开放态度。请注意,正如我上面所说,BoxLayout用于某些面板,它实际上是问题的一部分。

0 个答案:

没有答案