IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Agents de placement/Fenêtres Java Discussion :

Récupérer la taille d'une JFrame


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut Récupérer la taille d'une JFrame
    Salut,

    J'ai une JFrame qui peut être maximisée (qui prend tout l'écran), et je cherche sa taille et sa position en état non maximisée (en état normal), sans pour autant la "démaximiser". Ces données sont forcément stockées qq part, car quand on sort du mode "plein écran", la fenêtre retrouve bien sa taille et sa position d'origine.

    Comment faire?

  2. #2
    Membre confirmé Avatar de Frac10
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 81
    Par défaut
    Heu je vais sûrement dire un truc auquel tu as déjà pensé (et peut-être même une connerie, mais bon...), mais si tu mettais un ComponentListener sur ta fenêtre qui t'informerais à chaque fois que l'utilisateur change la taille de celle-ci : tu enregistres la taille de celle-ci (si l'utilisateur ne l'a pas maximisée, c'est-à-dire si sa taille n'est pas égale à la taille de l'écran par exemple) et t'auras à chaque fois les valeurs de ta fenêtre non maximisée.

    Désolé si c'est nul et que çà t'avance à rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    final int w = frame.getSize().width;
    final int h = frame.getSize().height;
    final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    frame.addComponentListener(new java.awt.event.ComponentAdapter() {
    	public void componentResized(ComponentEvent e) {
    		if (w >= screen.width && h >= screen.height) {
    			System.out.println("Fenêtre maximisée");
    		} else {
    			w = frame.getSize().width;
    			h = frame.getSize().height;
    		}
    	}
    });

  3. #3
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Non c'est pas nul ^^
    C'est la seule solution que je vois pour le moment...

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    D'ailleurs, il y a un défaut à cette solution:
    Ce n'est pas parce que la fenêtre est plus grande que l'écran qu'elle est maximisée... Par exemple, s'il y a un changement de résolution, elle peut dépasser l'écran... Ou encore avec des clic droit, déplacer et redimensionner...

    EDIT: remarque, il suffit de faire un getExtendedState() pour récupérer l'état

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Bon, je met résolu, j'ai utilisé cette méthode (enfin en adaptant, et quand c'est moved ou resized, je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(getExtendedState() != MAXIMIZED_BOTH)
        bounds = getBounds();

  6. #6
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par ®om
    Bon, je met résolu, j'ai utilisé cette méthode (enfin en adaptant, et quand c'est moved ou resized), je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(getExtendedState() != MAXIMIZED_BOTH)
        bounds = getBounds();
    Le problème, c'est que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            public void componentMoved(ComponentEvent e) {
                /* On garde en mémoire la taille et la position de la fenêtre si elle n'est pas maximisée. */
                int state = getExtendedState();
                if(state != MAXIMIZED_BOTH)
                    bounds = getBounds();
            }
     
            public void componentResized(ComponentEvent e) {
                /* On garde en mémoire la taille et la position de la fenêtre si elle n'est pas maximisée. */
                int state = getExtendedState();
                if(state != MAXIMIZED_BOTH)
                    bounds = getBounds();
            }
    getExtendedState() n'a pas l'air de se mettre à jour aussi-vite que l'appel à componentMoved...
    Ce qui fait que parfois l'état est encore indiqué "normal" même si l'appel à move (qui déplace en -4;-4 pr mettre en plein écran) est déjà appelé. Si je rajoute une attente (par ex 500ms, l'état est bien pris en compte...)

    Y'a-t-il un vrai moyen de connaître l'état à un instant donné (avec une attente "fiable", pas une vieille bidouille Thread.sleep(500))?

Discussions similaires

  1. Taille d'une JFrame par rapport à sa zone client?
    Par Médinoc dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 04/11/2006, 22h13
  2. taille d'une JFrame pdt resize
    Par jeromekl dans le forum Agents de placement/Fenêtres
    Réponses: 10
    Dernier message: 26/08/2006, 05h17
  3. [MySQL] Récupérer la taille d'une BDD
    Par JoN28fr dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 18/04/2006, 11h58
  4. [Images] Récupérer la taille d'une image
    Par Linaa dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/10/2005, 22h43
  5. Récupérer la taille d'une image dans un fichier (GIF/JPEG)
    Par SheikYerbouti dans le forum Multimédia
    Réponses: 4
    Dernier message: 12/05/2005, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo