首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSplitPane与JTextArea的结合

JSplitPane与JTextArea的结合
EN

Stack Overflow用户
提问于 2012-04-02 15:15:59
回答 3查看 1.4K关注 0票数 3

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

我的问题是如何根据与JSplitPane的交互来调整组件(主要在右边)的大小。所以当JSplitPane被拖到左边时,我的JTextArea和JTextPane就变宽了。

我尝试过不同的设置,也设置了preferredSize和MaximumSize,但这些似乎都不起作用。组件停留在它们的preferredSize上。如果我试图使它们变小,scrollPane就能工作(这很好),但是当我试图使它们变大时,它们会保持首选的大小。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-02 15:21:50

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

BoxLayout尝试以其首选宽度(用于水平布局)或高度(用于垂直布局)排列组件。对于水平布局,如果不是所有组件的高度相同,BoxLayout会尝试使所有组件与最高组件一样高。如果对特定组件不可能这样做,那么BoxLayout根据组件的Y对齐垂直对齐该组件。默认情况下,组件的Y对齐度为0.5,这意味着组件的垂直中心应该与具有0.5Y对齐的其他组件的垂直中心具有相同的Y坐标。 类似地,对于垂直布局,BoxLayout试图使列中的所有组件与最宽的组件一样宽。如果失败,它将根据它们的X对齐水平地对齐它们。对于PAGE_AXIS布局,水平对齐是基于组件的前缘进行的。换句话说,如果容器的ComponentOrientation从左到右,X对齐值0.0表示组件的左边缘,否则表示组件的右侧边缘。

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

票数 2
EN

Stack Overflow用户

发布于 2012-04-02 19:30:15

就我个人而言,我会使用GridBagLayout来处理任何需要智能扩展的东西。GridBagLayout一开始看起来很吓人,但是一旦你掌握了它的诀窍,它就不会那么糟糕了。您还可以尝试MiGLayout,它可能更容易学习,但在某些情况下可以与GridBagLayout一样详细。

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

票数 0
EN

Stack Overflow用户

发布于 2015-01-31 21:58:47

对我来说,只需在JTextArea上设置一个非0的最小大小就可以解决JSplitPane在使用JTextArea和BoxLayout时无法调整大小的问题。

代码语言:javascript
复制
jTextPane.setMinimumSize(new Dimension(50, 50));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9978989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档