在Swing中,让JSplitPane拆分两个大小各为50%的jpanels的最佳方式是什么?
看起来,如果我不设置面板的首选大小,它总是使第一个面板几乎不可见(2%),第二个面板(98%)
提前感谢
发布于 2010-02-22 22:35:41
使用
setResizeWeight(.5d);
...默认值0表示右/下组件获得所有额外空间(左/上组件表现为固定),值为1时指定左/上组件获得所有额外空间(右/下组件表现为固定)。...
发布于 2010-02-22 23:45:31
您应该使用setDividerLocation(double proportionalLocation)来确定JSplitPane的初始空间分布,然后使用相同的值调用setResizeWeight(double),以确保按比例调整窗格的大小。
另外,请注意:在JSplitPane可见之前调用setDividerLocation(double)将无法正常工作,因为空间计算是基于Component的当前大小进行的。相反,您需要使用一些讨厌的技巧,比如覆盖包含JSplitPane的JPanel的方法。
private boolean painted;
@Override
public void paint(Graphics g) {
super.paint(g);
if (!painted) {
painted = true;
splitPane.setDividerLocation(0.25);
}
}发布于 2013-10-01 00:56:57
我遇到了类似的问题,我通过在父容器中使用组件侦听器并在第一次调整大小时设置分隔符位置来解决它。将变量firstResize初始化为true,并将其添加到父容器构造函数中:
addComponentListener(new ComponentAdapter(){
@Override
public void componentResized(ComponentEvent e) {
if(firstResize){
splitPane.setDividerLocation(0.5);
firstResize = false;
}
}
});这应该会在第一次设置父容器大小时使分隔线居中。
https://stackoverflow.com/questions/2311449
复制相似问题