You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:36:04