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

AWT/Swing Java Discussion :

[SWING] isDisplayable = problème


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Par défaut [SWING] isDisplayable = problème
    Bonjour à tous

    Pour un souci d'apparence, je souhaite mettre ma Jframe fullscreen (ça, j'y arrive) mais aussi Undecorated, uniquement en fullscreen

    Mais j'ai le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: The frame is displayable.
    Or, je ne vois rien pour modifier l'état de la Jframe

    Voici un code simple qui me donne l'erreur ci dessus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
     
            if (this.jCheckBox1.isSelected()){
                this.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
            }else{
                this.setExtendedState(javax.swing.JFrame.NORMAL);
     
            }
            this.setUndecorated(this.jCheckBox1.isSelected());
    }
    J'ai cherché sur le forum sans succé

    Si quelqu'un à une idée, je prends

    d'avance

    Pascal

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    salut,
    moi pour mettre une fenetre en fullscreen, j'utilise ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    setUndecorated(true);//on enleve le bordure
                   /*on met en pleine ecran*/
                    GraphicsEnvironment.getLocalGraphicsEnvironment()
                    .getDefaultScreenDevice().setFullScreenWindow(this);
                     /*on met le curseur invisible(facultatif*/
                    BufferedImage bufferedImage = new BufferedImage(16, 16,
                            Transparency.TRANSLUCENT);
                    Cursor cursor = Toolkit.getDefaultToolkit().createCustomCursor(
                            bufferedImage, new Point(), "cursor");
                    setCursor(cursor);
                     /*no comment*/
                    setDefaultCloseOperation(EXIT_ON_CLOSE);
                    setVisible(true);
    Ce code marche très bien, par contre il s'agit d'un pseudo fullscreen, les autres applis tournent encore derrière.
    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Par défaut
    Bonjour

    pour ta réponse

    Mais mon problème, c'est la première ligne
    C'est en effet cette commande qui me génère l'erreur.
    Si je mets ma fenêtre Undecorated avant de compiler, pas de problème, sauf que je ne peux plus la déplacer quand elle n'est pas FullScreen , et si je souhaite faire , j'ai le même message d'erreur.
    Le problème réside dans le fait de vouloir changer cette propriété dans le code.
    Comment rendre la fenêtre non displayable



    @+

    Pascal

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Par défaut
    salut
    public void setUndecorated(boolean undecorated) Disables or enables decorations for this frame. This method can only be called while the frame is not displayable.
    et
    public boolean isDisplayable() Determines whether this component is displayable. A component is displayable when it is connected to a native screen resource. 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.
    Donc la solution est simple (je ne l'ai pas tester)et horrible à souhait ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {
           
            if (this.jCheckBox1.isSelected()){
                this.setExtendedState(javax.swing.JFrame.MAXIMIZED_BOTH);
            }else{
                this.setExtendedState(javax.swing.JFrame.NORMAL);
              
            }
            this.setVisible(false);
            this.setUndecorated(this.jCheckBox1.isSelected());
            this.setVisible(true); 
    }
    ++

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    Comme indique par atha2, tu ne peux pas enlever les decoration d'une fenetre qui est deja marquee comme etant affichable (donc visible a l'ecran ou sur laquelle pack() a ete appelle).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Par défaut
    Merci

    Mais j'ai testé et ça ne fonctionne pas

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 897
    Billets dans le blog
    54
    Par défaut
    Pour enlever les bordures on fait ca AVANT d'afficher la fenetre ; a priori il ne devrait pas etre possible de la cacher, enlever les bordures puis l'afficher car elle est toujours marquee comme displayable. Mieux vaut cacher la fenetre avec bordure, en creer une nouvelle sans, mettre tous les composants dedans et afficher la nouvelle fenetre en lieu et place de l'ancienne. Faire l'inverse quand on veut remettre les bordures.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    164
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 164
    Par défaut
    :merci :pour vos réponses

    bouye, ta solution m'enchante guère

    Par contre, le problème est que lorsqu'une fenêtre est Undecorated, on ne peut plus la déplacer.

    Est il possible alors de l'afficher dès l'origine Undecorated et d'avoir un moyen de cliquer sur la fenêtre et la déplacer autrement qu'avec la bordure

    Dans ce cas ça règle mon problème

    @+

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par PM_calou Voir le message
    Est il possible alors de l'afficher dès l'origine Undecorated et d'avoir un moyen de cliquer sur la fenêtre et la déplacer autrement qu'avec la bordure
    C'est envisageable, mais tu devras le faire toi-même.
    Tu as toujours la méthode setLocation(x,y) sur une JFrame, en l'associant avec un MouseListener (pour détecter les clics) et un MouseMotionListener (pour détecter les déplacements), c'est jouable.

    Fred

Discussions similaires

  1. [Swing][ANT] problème d'accent
    Par McFoggy dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 11/09/2018, 08h30
  2. Réponses: 5
    Dernier message: 11/07/2006, 18h01
  3. Réponses: 2
    Dernier message: 26/05/2006, 12h04
  4. [swing] Menu:problème
    Par @yoyo dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 08/04/2006, 11h49
  5. [swing][JComboBox]Problème de taille
    Par n!co dans le forum Composants
    Réponses: 8
    Dernier message: 06/03/2004, 10h53

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