Java中如何实现split pane分割器拖动时实时调整两侧组件宽度
Java SplitPane 拖动实时调整两侧尺寸实现方案
Swing 框架(JSplitPane)
JSplitPane 默认关闭了拖动时的连续布局特性,仅需一行配置即可开启实时更新效果:
- 核心配置:调用
splitPane.setContinuousLayout(true)
该属性值为false时就是你当前的效果:拖动分割器仅显示指示线,松开鼠标后才更新布局;设为true后拖动过程中会实时重绘两侧组件,完全匹配预期效果。
可运行参考代码
import javax.swing.*; import java.awt.*; public class RealTimeSplitTest { public static void main(String[] args) { // Swing 组件操作必须放在事件 dispatch 线程 SwingUtilities.invokeLater(() -> { JFrame frame = new JFrame("SplitPane实时演示"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 600); JTextPane left = new JTextPane(); left.setText("左侧文本区域"); JTextPane right = new JTextPane(); right.setText("右侧文本区域"); JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right); // 开启实时布局 splitPane.setContinuousLayout(true); splitPane.setDividerLocation(400); frame.add(splitPane, BorderLayout.CENTER); frame.setVisible(true); }); } }
全局配置方式
如果需要所有JSplitPane默认都开启实时更新,可以在应用初始化、所有Swing组件实例化之前添加全局配置:
UIManager.put("SplitPane.continuousLayout", Boolean.TRUE);
JavaFX 框架(SplitPane)
JavaFX 的SplitPane默认就是拖动实时更新尺寸的效果,如果你遇到非实时更新的情况,排查是否自定义了分割器的鼠标事件,拦截了默认的布局更新逻辑即可。
内容的提问来源于stack exchange,提问作者Ruthvik
相关产品推荐
相关产品推荐

