正确的方法确保在SWT中保留shell纵横比

时间:2013-03-15 16:33:06

标签: java user-interface swt

我一直试图找到一种方法来强制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中的标题栏)...

有什么想法吗?这个问题真的让我伤心了很长时间,我无法在任何地方找到解决方案。

0 个答案:

没有答案