首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我切换标签的时候,JXMultiSplitPane疯了

当我切换标签的时候,JXMultiSplitPane疯了
EN

Stack Overflow用户
提问于 2011-08-21 01:09:17
回答 1查看 350关注 0票数 2

我使用JXMultiSplitPane (来自SwingX 1.6.2)来实现一个三窗格的水平接口。在中间窗格中,有两个选项卡的JTabbedPane:一个带有用于输入Markdown代码的JTextArea (当然是在JScrollPane中),另一个是用于显示呈现出来的HTML预览的JEditorPane (同样在滚动窗格中)。当用户切换到预览窗格时,编辑器中的文本将被处理并显示在预览窗格中。

我的问题是,如果我在编辑器中输入行长的文本,然后切换到预览,则中心窗格将展开。有时它只是一点点,有时它会占用比实际屏幕上更多的空间。但是,如果我手动移动一个调整大小的手柄,一切都会恢复正常。

在这种情况发生之前,我只找到了两种处理方法:

  1. 在输入任何文本之前手动调整其中一个窗格的大小。
  2. 在MultiSplitLayout模型中赋予中心窗格1的权重。

我不能使用第二个,因为默认情况下,它会扩展中央窗格以占用几乎整个窗口。

有办法解决这个问题吗?

更新

经过更多的测试后,即使是技术(2)也不能保持大小不变;在两个选项卡之间切换会稍微改变中心窗格的大小。

我现在认为问题在一定程度上是与选项卡式窗格有关。JTextAreaJEditorPane没有相同的大小,当我在它们之间切换时,JTabbedPane正在调整大小(因为每次都要重置JEditorPane文本。这不会是一个问题,除非JXMultiSplitPane会自动调整中心窗格的大小,直到用户通过手动调整大小为止。

因此,我应该能够通过修改JTabbedPane的大小来解决这个问题,但是仍然可以通过句柄条来调整大小。有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2011-08-23 11:50:46

MultiSplitLayout是.。LayoutManager,所以您必须了解它是如何工作的(我也是,我自己也不太熟悉它:-)

基本布局根据组件的prefSize进行,权重用于分配相对于pref的多余/缺失空间。默认情况下,分隔符是“浮动”的,也就是说,它们位于由基本机制布局的组件之间。当用户触摸一个分配器时,分配器是“不浮动”的,大小可以在分隔器之间进行调整。这就是为什么你没有看到大小-贪婪后,移动隔板一次。所以一条出路就是

  • 像往常一样设置JXMultiSplitPane,添加组件并在管理器完成初始布局后实现帧
  • 修复分隔符。

字符串布局=“(行”+)(叶JXMulitSplitPane((MultiSplitLayout.parseModel(layout)) weight=0.15)“+”(叶name=center weight=0.7)“+”(叶name=list weight=0.15)“+”;JXMultiSpitPane窗格=新的name=center // add组件并实现.pane.getMultiSplitLayout().setFloatingDividers(false);

或者,赋予权重更多的权重--迫使layoutManager将其用于布局本身(而不是仅用于多余/缺失空间的分布)。一个副作用是,公司的prefSize可能会被设置(通过布局,这是一个没有-从不,但谁是完美的;-)

代码语言:javascript
复制
   pane.getMulitSplitLayout().setLayoutByWeights(true);

不确定我更喜欢哪种方式,或者在多重拆分中是否/如何使它变得更容易。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7135718

复制
相关文章

相似问题

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