我正在使用JXMultiSplitPane
(来自 SwingX 1.6.2)来实现三窗格水平界面。在中心窗格中是一个JTabbedPane
带有两个选项卡的选项卡:一个带有一个JTextArea
(JScrollPane
当然是在 a 中)用于输入 Markdown 代码,另一个是一个JEditorPane
(再次在滚动窗格中)用于显示呈现的 HTML 预览。当用户切换到预览窗格时,编辑器中的文本会被处理并显示在预览窗格中。
我的问题是,如果我在编辑器中输入长行文本,然后切换到预览,中心窗格将展开。有时它只是一点点,有时它会占用比屏幕上实际更多的空间。但是,如果我手动移动其中一个调整大小手柄,一切都会恢复原状。
在它发生之前,我发现只有两种方法可以解决这个问题:
- 在输入任何文本之前手动调整其中一个窗格的大小。
- 在 MultiSplitLayout 模型中,将中心窗格的权重设为 1。
我不能使用第二个,因为默认情况下它会扩展中心窗格以占据几乎整个窗口。
有没有办法来解决这个问题?
更新
经过更多测试,即使技术(2)也不能保持大小不变;在两个选项卡之间切换会稍微改变中心窗格的大小。
我现在认为问题部分出在选项卡式窗格中。和JTextArea
没有JEditorPane
相同的大小,并且JTabbedPane
当我在它们之间切换时正在调整大小(因为我JEditorPane
每次都在重置文本。这不是问题,除非它JXMultiSplitPane
会自动调整中心窗格的大小,直到用户强制通过手动调整特定大小。
所以我应该能够通过固定大小来解决这个问题JTabbedPane
,但仍然可以通过把手调整大小。有什么建议吗?