Установка минимального размера для окна в java swing - PullRequest
25 голосов
/ 06 мая 2010

У меня есть JFrame , который имеет 3 JPanels in GridBagLayout ..

Теперь, когда я минимизирую окна, после определенного предела третья JPanel имеет тенденцию исчезать. Я попытался установить минимизирующий размер JFrame, используя setMinimumSize (new Dimension (int, int)) * , но безуспешно. Окна все еще можно свернуть.

Итак, я действительно хочу сделать порог, чтобы мое окно не могло быть свернуто после определенного предела.

Как я могу это сделать?

Код: -

import java.awt.Dimension;

import javax.swing.JFrame;

public class JFrameExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello World");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(400, 400));
        frame.setVisible(true);
    }
}

Также:

shadyabhi@shadyabhi-desktop:~/java$ java --showversion
java version "1.5.0"
gij (GNU libgcj) version 4.4.1

Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Usage: gij [OPTION] ... CLASS [ARGS] ...
          to invoke CLASS.main, or
       gij -jar [OPTION] ... JARFILE [ARGS] ...
          to execute a jar file
Try `gij --help' for more information.
shadyabhi@shadyabhi-desktop:~/java$

Дает мне вывод как

alt text

** ОБНОВЛЕНИЕ: ** То же самое при запуске, хотя IDE Netbeans дает ожидаемый результат .. Когда я запускаю компилятор "java JFrameExample", я сталкиваюсь с проблемами .. Теперь, что это значит ??

Ответы [ 2 ]

33 голосов
/ 06 мая 2010

Документация говорит мне, что это поведение зависит от платформы.Тем более, что следующий пример кода работает для меня как требуется в Windows Vista:

import java.awt.Dimension;

import javax.swing.JFrame;

public class JFrameExample {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Hello World");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setMinimumSize(new Dimension(100, 100));
        frame.setVisible(true);
    }
}
7 голосов
/ 30 августа 2012

Существует способ обеспечить минимальный размер на любой платформе. Вам нужно установить минимальный размер JFrame равным минимальному размеру его панели содержимого, а затем вам нужно написать ComponentAdapter и переопределить componentResized. Затем вы просто используете getSize и getMinimum size для вашего JFrame и заменяете width и / или height минимальной шириной или высотой, если они больше. Предполагая, что вы расширяете JFrame:

this.addComponentListener(new ComponentAdapter(){
        public void componentResized(ComponentEvent e){
            Dimension d=YourJFrame.this.getSize();
            Dimension minD=YourJFrame.this.getMinimumSize();
            if(d.width<minD.width)
                d.width=minD.width;
            if(d.height<minD.height)
                d.height=minD.height;
            YourJFrame.this.setSize(d);
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...