Предотвращение изменения размера окна SWT по горизонтали - PullRequest
5 голосов
/ 08 декабря 2010

Есть ли бит STYLE, который я мог бы применить к моей оболочке / диалогу, чтобы предотвратить горизонтальное изменение размера?Я хотел бы, чтобы окно разрешало только вертикальное изменение размера.

Спасибо.

1 Ответ

6 голосов
/ 08 декабря 2010

Используйте 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...