JSplitPane 精确拆分 50%

2022-09-01 15:14:00

在 Swing 中,让 JSplitPane 拆分两个大小为 50% 的 jpanel 的最佳方法是什么?

看起来,如果我不在面板上设置首选尺寸,它总是使第一个面板几乎不可见(2%),第二个面板(98%)

提前致谢


答案 1

应使用 setDividerLocation(双比例位置) 来确定 的初始空间分布,然后使用相同的值进行调用,以确保按比例调整窗格的大小。JSplitPanesetResizeWeight(double)

另外,请注意:在 可见之前调用将无法正常工作,因为空间计算基于 的当前大小。相反,您需要涉及一个令人讨厌的黑客攻击,例如覆盖 包含以下内容的 paint 方法:setDividerLocation(double)JSplitPaneComponentJPanelJSplitPane

private boolean painted;

@Override
public void paint(Graphics g) {
    super.paint(g);

    if (!painted) {
        painted = true;
        splitPane.setDividerLocation(0.25);
    }
}

答案 2

setResizeWeight(.5d);

[...]默认值 0 表示右/下组件获取所有额外空间(左/上组件作用固定),其中值 1 指定左/上组件获取所有额外空间(右/下组件固定)。[...]


推荐