防止SWT窗口水平调整大小

时间:2010-12-08 06:11:14

标签: java swt

是否有STYLE位可以应用于我的shell /对话框以防止水平调整大小?我希望窗口只允许垂直调整大小。

感谢。

1 个答案:

答案 0 :(得分:6)

使用ControlListener捕获窗口的resize事件。 如果用户尝试更改窗口的宽度,则恢复其默认值。

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();
    }
}