将JSplitPane与JTextArea一起使用

时间:2012-04-02 15:16:00

标签: java swing jsplitpane

在我的应用程序中,我得到了包含JSplitPane的框架。 JSplitPane设置为水平分割。在左侧有一个面板,其中包含一些无关紧要的组件。 在右侧,我在JPanel中包含BoxLayout的子JTextAreaJScrollPane内的JTextPane,以及JScrollPane

  

我的问题是如何基于交互来获取调整大小的组件(主要是在右侧)   与JSplitPane。所以当JSplitPane被拖到左边时,我的   JTextArea和JTextPane变得更宽。

我尝试过不同的设置,同时设置preferredSize和MaximumSize,但这似乎都不起作用。组件保持在他们的首选大小。如果我试图让它们变小,则scrollPane可以正常工作(这很好)但是当我试图让它们变大时,它们会保持优先尺寸。

3 个答案:

答案 0 :(得分:2)

您的问题很可能是由于右侧面板上使用的BoxLayout造成的。从类javadoc复制粘贴:

  

BoxLayout尝试将组件排列为首选宽度(水平布局)或高度(垂直布局)。对于水平布局,如果不是所有组件都具有相同的高度,BoxLayout会尝试使所有组件与最高组件一样高。如果对于特定组件不可能,则BoxLayout根据组件的Y对齐垂直对齐该组件。默认情况下,组件的Y对齐为0.5,这意味着组件的垂直中心应与具有0.5 Y对齐的其他组件的垂直中心具有相同的Y坐标。

     

同样,对于垂直布局,BoxLayout会尝试使列中的所有组件与最宽的组件一样宽。如果失败,则根据X对齐水平对齐它们。对于PAGE_AXIS布局,水平对齐基于组件的前沿完成。换句话说,如果容器的ComponentOrientation从左到右,则X对齐值0.0表示组件的左边缘,否则表示组件的右边缘

使用另一种缩放内部组件的布局。例如,CENTER的{​​{1}}区域具有此类行为。

答案 1 :(得分:0)

就个人而言,我会使用GridBagLayout来表示需要智能扩展的任何内容。 GridBagLayout起初看起来很吓人,但是一旦掌握了它,就不会那么糟糕了。您也可以尝试MiGLayout,这可能更容易学习,但在某些情况下可能与GridBagLayout一样冗长。

如果您不想学习GridBagLayout或MiGLayout的所有细微差别,可以安装Eclipse的WindowBuilder插件,并使用WindowBuilder的Swing Designer向导和WYSIWYG编辑器来设置布局。

答案 2 :(得分:0)

对我来说,简单地在JTextArea上设置非0最小尺寸解决了在将JTextArea与BoxLayout一起使用时无法调整JSplitPane大小的问题。

jTextPane.setMinimumSize(new Dimension(50, 50));