Java 将JSplitPane与JTextArea一起使用

Java 将JSplitPane与JTextArea一起使用,java,swing,jsplitpane,Java,Swing,Jsplitpane,在我的应用程序中,我得到了一个包含JSplitPane的框架。JSplitPane设置为水平拆分。在左侧有一个面板,其中包含一些无关紧要的组件。 在右边,我看到了一个JPanel(BoxLayout),其中包含JTextArea的子类,在JScrollPane中包含JTextPane,在JScrollPane中包含JButton 我的问题是如何根据交互调整组件(主要在右侧)的大小 用JSplitPane。因此,当JSplitPane被向左拖动时,我的 JTextArea和JTextPane变得更

在我的应用程序中,我得到了一个包含
JSplitPane
的框架。
JSplitPane
设置为水平拆分。在左侧有一个面板,其中包含一些无关紧要的组件。 在右边,我看到了一个
JPanel
BoxLayout
),其中包含
JTextArea
的子类,在
JScrollPane
中包含
JTextPane
,在
JScrollPane
中包含
JButton

我的问题是如何根据交互调整组件(主要在右侧)的大小 用JSplitPane。因此,当JSplitPane被向左拖动时,我的 JTextArea和JTextPane变得更宽


我尝试过不同的设置,也设置了preferredSize和MaximumSize,但这些似乎都不起作用。组件保持其首选大小。如果我尝试将它们变小,滚动窗格会工作(这很好),但当我尝试将它们变大时,它们会保持在首选大小。

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

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

同样,对于垂直布局,BoxLayout尝试使列中的所有组件与最宽的组件一样宽。如果失败,它将根据它们的X对齐方式将它们水平对齐。对于页面_轴布局,根据组件的前缘进行水平对齐。换句话说,如果容器的ComponentOrientation从左到右,则X对齐值为0.0表示组件的左边缘,否则表示组件的右边缘

使用另一个缩放内部组件的布局。例如,
BorderLayout
CENTER
区域就有这样的行为。

就我个人而言,我会用a来表示需要智能缩放的任何内容。GridBagLayout一开始看起来很吓人,但一旦你掌握了窍门,就没那么糟糕了。您也可以尝试,这可能更容易学习,但在某些情况下可能与GridBagLayout一样冗长


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

对于我,只需在JTextArea上设置非0的最小大小,就可以解决在将JTextArea与BoxLayout一起使用时无法调整JSplitPane大小的问题

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

java swing,我用它的时候经常做噩梦。[不寒而栗…]奥威尔我差不多做完了,所以寻找其他选择对你的决心和信念来说不是个好主意。在我看来,用java swing制作一些有用的东西并活着讲述这个故事应该获得诺贝尔奖。我可以告诉你,使用swing有一些非常糟糕的经历。^^幸运的是,我只为大学项目开发应用程序,所以事情很简单。试过了。完全相同的行为。JScrollPane可能是问题所在吗?虽然textArea/textPane不能没有JScrollPane..一个空面板不知何故导致了问题。。尽管布局也可能有所帮助。谢谢我把这东西弄好了。导致问题的原因是我试图调整大小的JPanel位于另一个JPanel中。拆下外部面板后,它就工作了。虽然我会用GridBagLayout做一些测试,只是为了了解它。干杯