web-dev-qa-db-fra.com

Définition de la taille minimale d'une fenêtre dans Java swing

J'ai un JFrame qui a JPanels in GridBagLayout ..

Maintenant, quand je minimise une fenêtre, après une certaine limite, le troisième JPanel a tendance à disparaître. J'ai essayé de définir la taille de JFrame en minimisant en utilisant setMinimumSize (nouvelle dimension (int, int)) mais sans succès. Les fenêtres peuvent encore être minimisées.

Donc, je veux vraiment faire un seuil, que ma fenêtre ne puisse pas être minimisée après une certaine limite.

Comment faire?

Code:-

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

Aussi:

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$

Me donne une sortie comme

alt text

** MISE À JOUR: ** La même chose lors de l'exécution si Netbeans IDE donne la sortie attendue .. Lorsque je passe par le compilateur "Java JFrameExample", je suis confronté à des problèmes .. Maintenant, qu'est-ce que cela signifie ??

26

Le documentation me dit que ce comportement dépend de la plateforme. Surtout, puisque l'exemple de code suivant fonctionne pour moi comme souhaité dans 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);
    }
}
34
ablaeul

Il existe en fait un moyen d'assurer une taille minimale sur n'importe quelle plate-forme. Vous devez définir la taille minimale du JFrame sur la taille minimale de son volet de contenu, puis vous devez écrire un ComponentAdapter et remplacer componentResized. Ensuite, vous utilisez simplement getSize et getMinimum size sur votre JFrame et remplacez la largeur et/ou la hauteur par la largeur ou la hauteur minimale si elle est supérieure. En supposant que vous étendez 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);
        }
    });
7
Bat0u89