setMaximumSize не работает в Java

У меня есть Java-программа с JFrame

Я использую абсолютное позиционирование

вот моя основная функция

public static void main(String[] args) {
    ape Ape = new ape();
    Ape.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Ape.setSize(1000,1000);
    Ape.setMinimumSize(new Dimension(1000,1000));
    Ape.setMaximumSize(new Dimension(1000,1000));
    Ape.setVisible(true);
}

Когда я запускаю программу, я пытаюсь изменить ее размер и уменьшить размер окна, но не могу

когда я пытаюсь увеличить окно, оно работает нормально, я в основном пропускаю функцию setMaximumSize()

Я читал вокруг, и, по-видимому, это случалось раньше

это известная ошибка?

если да, то я слышал, что могу сделать Window Listener, когда я попробовал, я реализовал функции, которые нужны WindowListener, но не смог найти ничего, чтобы решить мою проблему.

пожалуйста, попробуйте это сами и посмотрите, что произойдет...

заранее спасибо

PS... пожалуйста, не смейтесь над названиями, которые я даю своим классам... :)


person Community    schedule 30.10.2010    source источник


Ответы (4)


см. http://forums.sun.com/thread.jspa?threadID=5342801:

Это известная ошибка:

Может быть, вы могли бы использовать

Ape.setResizable(false)

вместо?

PS: принято давать имена классам, начинающимся с заглавной буквы, а переменным — с маленькой, а не наоборот.

person thejh    schedule 30.10.2010
comment
спасибо за отчет, и Ape.setResizable в основном то, что я хотел, спасибо - person ; 31.10.2010
comment
Я ищу, если эта ошибка решена. Я использую jdk1.6.0_45 (приложение было разработано много лет назад, и я его поддерживаю). Это все еще ошибка? - person gengencera; 09.05.2018

В моем случае я использовал следующее, и это сработало:

    Dimension newDim = new Dimension(width, height);

    label.setMinimumSize(newDim);
    label.setPreferredSize(newDim);
    label.setMaximumSize(newDim);
    label.setSize(newDim);
    label.revalidate();
person Johntor    schedule 23.08.2015
comment
Я не знаю, как сказать спасибо вам .. спасибо большое спасибо. Вы спасли мое лицо и день. повторная проверка является ключом. - person Suresh Atta; 12.11.2016

Для пользователя Netbeans попробуйте установить значения для максимального фрейма в setMaximizedBounds(). Щелкните в свойствах фрейма, вы найдете возможность определить значения для setMaximizedBounds.

person A.Aleem11    schedule 19.06.2018
comment
Этот 2-летний ответ помог мне. Спасибо - person Osama Salah; 21.11.2020

Я исправил это так:

    frame.setBounds(0, 0, 1480, 910);
    frame.setMinimumSize(new Dimension(1200, 799));
    frame.setMaximumSize(new Dimension(1480, 910));
    frame.setPreferredSize(new Dimension(1480, 910));
    frame.setLocationRelativeTo(null);
    frame.addComponentListener(new ComponentAdapter() {

        @Override
        public void componentResized(ComponentEvent e) {
            double w = frame.getSize().getWidth();
            double h = frame.getSize().getHeight();
            if(w > 1480.0 && h > 910.0){
                frame.setSize(new Dimension(1480, 910));
                frame.repaint();
                frame.revalidate();
            }

            super.componentResized(e);
        }

    });
person Coder ACJHP    schedule 12.12.2016