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 :

Mettre / enlever dynamiquement la décoration d'une JFrame


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Mettre / enlever dynamiquement la décoration d'une JFrame
    Bonjour à tous.

    Voila j'ai une petite question technique concernant le fait d'enlever ou de remettre la décoration d'une fenêtre.

    Je suis en train de concevoir une sorte de visionneuse d'image à la Acdsee.
    J'aimerais pouvoir passer de simple fenêtrage à plein écran avec un raccourcit, comme dans ce dernier.

    Mon simple problème réside dans ce changement.

    J'utilise la méthode de la classe JFrame :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setUndecorated(boolean flag)
    Seulement, cette méthode ne peut être exécutée qu'une fois, à moins que la fenêtre ne soit plus considérer comme affichable.

    J'ai essayé d'utiliser les méthodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    addNotify()
    removeNotify()
    Cela permet de rendre affichable ou non un composant et ses enfants.
    Mais mon menu n'est plus utilisable après cela..

    Si quelqu'un a bien compris mon problème et pense avoir une solution, je suis preneur !

    Cordiallement,

    Arno

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bon ben j'ai solutionné ce problème en utilisant deux JFrame...
    C'est pas très propre, mais c'est le seul moyen que j'ai pour l'instant.

    Je laisse le poste ouvert au cas où quelqu'un trouve une solution.

  3. #3
    Membre habitué Avatar de donnadieujulien
    Développeur informatique
    Inscrit en
    Avril 2008
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2008
    Messages : 433
    Points : 191
    Points
    191
    Par défaut salut
    Pour du plein écran, il y a des outils déjà existants sans prise de tête..
    Je les ai déjà utilisés il y a longtemps.
    IL me semble que ca doit ressembler à ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    GraphicsDevice myDevice; 
    GraphicsEnvironment ge = GraphicsEnvironment.
    		   getLocalGraphicsEnvironment();
     
    		GraphicsDevice myDevice = ge.getDefaultScreenDevice();
    		//Window myWindow; 
     
    		try { 
    		    myDevice.setFullScreenWindow(ta_frame); 
    		}
    		catch(Exception e){
    			e.printStackTrace();
    		}
    Y me semble qu'il y a quand même quelques bugs...arf, c'est pas vraiment au point...

    Sinon plutot que de faire 2 Frames, pourquoi tu fais pas simplement un resize de ta frame sur tout l'écran, en undecorated?
    Ca serait un peu plus propre..., et il me semble la meilleure solution si le reste n'est pas encore au point...
    Il me semble que l'avait testé en 1.4 ou 1.5, alors tu peut toujours essayer en 1.6...
    On ne peut créér ce qu'on ne peut imaginer...
    Tu sens la puissance du BIT?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    J'ai mal du m'exprimer

    Si je ne m'abuse, ta solution est un plein écran type jeux vidéo.
    Ce n'est pas du tout ce que je veux lol.

    J'ai juste besoin d'enlever la décoration de la fenêtre et de la maximiser.
    Je sais comment faire les deux.

    Sauf qu'on peut choisir de laisser ou d'enlever la décoration d'une fenêtre seulement quand elle n'est pas affichable, non valide.

    J'ai une ébauche de solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    public class MyFrame extends JFrame {
     
       // Constructeur
       public MyFrame() {
          buildMyFrame();
          manageEvents();
       }
     
       // Construit la fenêtre
       private void buildMyFrame() {
          setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
          setSize(800, 600);
          setExtendedState(JFrame.MAXIMIZED_BOTH);
          setVisible(true);
       }
     
       // Gère les évènements liés au clic molette
       private void manageEvents() {
          addMouseListener(new MouseAdapter() {
             @Override
             public void mousePressed(MouseEvent e) {
                super.mousePressed(e);
                if(SwingUtilities.isMiddleMouseButton(e)) {
                   changeScreenMode();
                }
             }
          };
       }
     
       // Change de mode de fenêtrage (Normal <-> Maximisation sans bordure)
       private void changeScreenMode() {
          removeNotify();
          if(isUndecorated()) {
             setUndecorated(false);
             setExtendedState(JFrame.NORMAL);
          } else {
                   setUndecorated(true);
                   setExtendedState(JFrame.MAXIMIZED_BOTH);
          }
          addNotify();
       }
    }
    Le problème, il doit être simple remarque mais je l'écris quand même, est que quand je passe en mode Maximisé sans décoration et que je reviens en mode normal, mon menu est grisé, inutilisable.
    J'icônifie la fenêtre, je la réouvre et la : le menu est de nouveau disponible.
    Sauf que les accélérations des JMenuItem ne fonctionnent plus ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2009
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bon et bien problème auto résolu

    A component is made displayable either when it is added to a displayable containment hierarchy or when its containment hierarchy is made displayable. A containment hierarchy is made displayable when its ancestor window is either packed or made visible.

    A component is made undisplayable either when it is removed from a displayable containment hierarchy or when its containment hierarchy is made undisplayable. A containment hierarchy is made undisplayable when its ancestor window is disposed.
    La solution consiste donc à faire un dispose() sur la fenêtre, puis faire les actions que l'on souhaite dessus, et la ré afficher par un setVisible(true).

    Merci aux personnes qui ont regardé ce sujet.

    Starchic

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Modifier dynamiquement le contenu d'une JFrame
    Par FabaCoeur dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 27/10/2007, 18h08
  2. enlever la bordure windows d'une JFrame
    Par pierrot2908 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 11/04/2007, 15h59
  3. Adaptation dynamique des composants d'une JFrame
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 06/12/2006, 22h23
  4. Mettre à jour dynamiquement une fenêtre swing
    Par madina dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 23/11/2005, 19h08
  5. [AWT] JFrame - Mettre une taille minimum sur une Jframe
    Par rabobsky dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 27/07/2005, 18h20

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