我一直试图找到一种方法来强制shell调整大小以保持一定的宽高比。这是我提出的唯一方法:
shell.addControlListener(new ControlListener() {
@Override
public void controlMoved(ControlEvent e) {}
@Override
public void controlResized(ControlEvent e) {
final Rectangle window = mShell.getClientArea();
if (aspectRatio <= 1) {
window.width = (int) (window.height * aspectRatio);
} else {
window.height = (int) (window.width / aspectRatio);
}
shell.setSize(window.width, window.height);
}
});
这种方法的问题是shell.setSize()还会引发一个resize事件(它还会破坏OS X Lion中的标题栏)...
有什么想法吗?这个问题真的让我伤心了很长时间,我无法在任何地方找到解决方案。