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

j'ai un JFrame qui est 3 JPanelsGridBagLayout..

maintenant, quand je minimise une fenêtre, après une certaine limite, le troisième JPanel tend à disparaître. J'ai essayé de définir la taille minimale de JFrame en utilisant setMinimumSize(new Dimension (int, int)) mais pas de succès. Les fenêtres peuvent encore être minimisées.

donc, je veux réellement faire un seuil, que ma fenêtre ne peut pas être minimisée après un certaine limite.

Comment puis-je le 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 la sortie comme

alt text

* * Mise à jour: * * la même chose lorsque l'IDE NetBeans donne la production attendue.. Lorsque je passe en revue le compilateur "java JFrameExample", je suis confronté à des problèmes.. Maintenant, ce que cela signifie??

25
demandé sur Community 2010-05-06 18:42:02

2 réponses

documentation me dit que ce comportement est dépendant de la plateforme. En particulier, puisque L'exemple de code suivant fonctionne pour moi comme désiré 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);
    }
}
32
répondu ablaeul 2010-05-06 14:57:29

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 à la taille minimale de son volet de contenu, puis vous devez écrire un ComponentAdapter et outrepasser componentResized. Ensuite, vous utilisez 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 plus grande. En supposant que vous prolongiez 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);
        }
    });
6
répondu Bat0u89 2012-08-30 10:57:55