Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SWT:sashform儿童问题';s宽度_Java_Swt - Fatal编程技术网

Java SWT:sashform儿童问题';s宽度

Java SWT:sashform儿童问题';s宽度,java,swt,Java,Swt,我的申请表上有一张横条,上面有两个孩子。最左边的宽度应始终至少为200像素。因此,我在左侧组件中添加了一个ControlListener。在controlResized事件中,我检查组件的宽度。当它小于200时,我将其边界宽度设置为200。显然,当组件的大小调整到该宽度时,它可以工作,但窗框窗体停止工作-窗框不再可见,它仍然位于组件下方 有人知道我错过了什么吗 我试过: component.addControlListener(new ControlAdapter() { @Override p

我的申请表上有一张横条,上面有两个孩子。最左边的宽度应始终至少为200像素。因此,我在左侧组件中添加了一个ControlListener。在controlResized事件中,我检查组件的宽度。当它小于200时,我将其边界宽度设置为200。显然,当组件的大小调整到该宽度时,它可以工作,但窗框窗体停止工作-窗框不再可见,它仍然位于组件下方

有人知道我错过了什么吗

我试过:

component.addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e) {
if (component.getBounds().width < 200) {
Rectangle bounds = component.getBounds();
bounds.width = 200;
component.setBounds(bounds);
}
}
});
component.addControlListener(新的ControlAdapter(){
@凌驾
公共无效控件已调整大小(ControlEvent e){
if(component.getBounds().width<200){
矩形边界=component.getBounds();
宽度=200;
组件。立根(边界);
}
}
});

只是一个猜测,但在以编程方式调整内部组件的大小后,可能需要在SashForm上调用pack()或layout()。

是一个调用SashForm的示例。

layout()会导致“堆栈溢出”,因为该方法需要再次启动controlResized event-infinte递归。pack()无效。您好。谢谢你的片段!我查看了它,并在代码中尝试了类似于resize()的方法,为sashform组件和sash设置边界。根据我设置的距离,从静态事件(例如按下按钮)调用此方法不会出现问题。但是,当从shell resize事件调用resize()时,效果非常不同:组件宽度没有任何意义,窗扇仍然不可见。我错过了什么吗?我没有自己的测试环境。Justed指出了一个处理这个话题的例子。