防止SWT窗口水平调整大小

5

是否有一种样式位可以应用于我的shell/dialog,以防止水平调整大小?我希望窗口只允许垂直调整大小。

谢谢。

1个回答

6
使用ControlListener来捕获窗口的调整大小事件。如果用户试图更改窗口的宽度,则恢复其默认值。
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class TestWindow {

    private static int CONST_WIDTH = 200;

    public static void main(String[] args) {
        Display display = new Display();
        final Shell shell = new Shell(display);
        shell.setBounds(shell.getBounds().x, shell.getBounds().y, CONST_WIDTH, shell.getBounds().height);
        shell.setText("Test");

        shell.addControlListener(new ControlAdapter() {

            @Override
            public void controlResized(ControlEvent e) {
                Rectangle rect = shell.getBounds();
                if(rect.width != CONST_WIDTH) {
                    shell.setBounds(rect.x, rect.y, CONST_WIDTH, rect.height);
                }
            }
        });

        shell.open();
        while(!shell.isDisposed()) {
            if(!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }
}

它还可以防止移动窗口:shell.setBounds(rect.x,rect.y, - draw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接