Задать вопрос
@Axeles
Нечего тут пока писать

Скажите почему не задаётся максимальный размер окна?

Доброго времени суток. Я только начинаю изучать Java, и на каждом шагу встречаю много подводных камней. Порой ошибки глупые и банальные. Могу целый день сидеть пытаясь решить какую нибудь ерунду. Может это и неправильно спрашивать какие то глупые вопросы, но уже понял всё же лучше спросить и двигаться дальше. В связи с чем прошу помочь мне в решении такой задачи. Мне необходимо задать размер формы, что бы минимальный размер её составлял 400 на 400 а максимальный 600 на 600.
JFrame frame = new JFrame("Новая форма");
		frame.setVisible(true);
		frame.setSize(400, 400);
		frame.setMinimumSize(new Dimension(400, 400));
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setMaximumSize(new Dimension(600, 600));

Если ограничить пользователя с уменьшением окна всё получилось то вот метод setMaximumSize не работает вовсе. Почему?
  • Вопрос задан
  • 2781 просмотр
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Поверхностный гуглеж показывает что это известный баг, и что надо либо ждать фикса, либо использовать альтернативы.
Ответ написан
jusio
@jusio
Senior Software Engineer at Restlet
Это древний баг Swing'a на Windows, который скорее всего не будут исправлять. Можно поправить это дело в ручную при помощи ComponentListener'a, используйте его для отлова событий изменения размеров и вручную меняйте размеры формы. Пример:

final JFrame frame = new JFrame();
        frame.addComponentListener(new ComponentAdapter() {
            @Override
            public void componentResized(ComponentEvent e) {
                int width = e.getComponent().getWidth();
                int height = e.getComponent().getHeight();
                int newWidth = width;
                int newHeight = height;
                if (width > 600) {
                    newWidth = 600;
                }
                if (width < 400) {
                    newWidth = 400;
                }
                if (height > 600) {
                    newHeight = 600;
                }
                if (height < 400) {
                    newHeight = 400;
                }
                if (newHeight != height || newWidth != width) {
                    frame.setSize(newWidth, newHeight);
                }
            }
        });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы