Mettre une condition sur un affichage
Résolu
sansordi
Messages postés
80
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Est-il possible de mettre une condition pour vérifier si une fenêtre est bien afficher?
Je m'explique : j'aimerais vérifier si une fenêtre interne est déjà active par l'intermédiaire d'une condition du genre :
if (maFenetreInterne != visible) {
maFenetreInterne.setVisible(true)
}
mais je ne trouve pas la bonne syntaxe.
Dans le détail, j'aimerais avoir comme résultat en cliquant sur mon bouton :
- si la fenêtre n'est pas visible, la rendre visible et au premier plan
- si la fenêtre est visible, la remettre en premier plan (faut-il utiliser le toFront()? j'ai l'impression que ca ne marche pas)
Merci pour votre aide.
Est-il possible de mettre une condition pour vérifier si une fenêtre est bien afficher?
Je m'explique : j'aimerais vérifier si une fenêtre interne est déjà active par l'intermédiaire d'une condition du genre :
if (maFenetreInterne != visible) {
maFenetreInterne.setVisible(true)
}
mais je ne trouve pas la bonne syntaxe.
Dans le détail, j'aimerais avoir comme résultat en cliquant sur mon bouton :
- si la fenêtre n'est pas visible, la rendre visible et au premier plan
- si la fenêtre est visible, la remettre en premier plan (faut-il utiliser le toFront()? j'ai l'impression que ca ne marche pas)
Merci pour votre aide.
A voir également:
- Mettre une condition sur un affichage
- Excel cellule couleur si condition texte - Guide
- Double affichage sur un seul écran - Guide
- Windows 11 affichage classique - Guide
- Problème affichage fenêtre windows 10 - Guide
- Problème affichage page internet google chrome - Forum Téléphones & tablettes Android
1 réponse
Bonjour,
Ta condition serait sûrement
Au pire, elle est déjà visible et au premier plan et ça ne changera rien...
Du coup tu aurais juste à faire :
Je ne suis pas sûr que le requestFocus corresponde exactement à ce que tu veux faire quand tu dis "la mettre au premier plan". De plus il faut noter que cette méthode peut échouer s'il est impossible de lui donner le focus, par exemple à cause d'une fenêtre modale.
Ta condition serait sûrement
if (!maFenetreInterne.isVisible())cependant je ne vois pas l'intérêt d'une telle condition puisque dans tous les cas tu veux faire la même chose : l'avoir visible au premier plan.
Au pire, elle est déjà visible et au premier plan et ça ne changera rien...
Du coup tu aurais juste à faire :
maFenetreInterne.setVisible(true);// même si elle est déjà affichée maFenetreInterne.requestFocus(); // même si elle a déjà le focus
Je ne suis pas sûr que le requestFocus corresponde exactement à ce que tu veux faire quand tu dis "la mettre au premier plan". De plus il faut noter que cette méthode peut échouer s'il est impossible de lui donner le focus, par exemple à cause d'une fenêtre modale.
Enfaite j'en ai besoin car j'ajoute mes fenêtres interne dans un JPanel, et si la fenêtre est déjà ajouté, cela rapporte une erreur à la fin d'execution du programme.
Justement est-il plus judicieux de procédé ainsi (cad ajouter les fenêtres internes dans un JPanel)? ou cela ne sert à rien et on peux les laisser libres dans la fenêtre primaire sans JPanel?
(question peut être nul mais je débute encore)
Pour moi, c'est un objet qui étends java.awt.Window (JFrame, JDialog, etc.) et un tel objet ne doit pas être contenu dans un JPanel, c'est un conteneur de premier ordre, il ne devrait pas avoir de parent.
Pour ta question je t'invite à regarder la documentation, on t'y explique le concept de JRootPane :
https://docs.oracle.com/javase/8/docs/api/javax/swing/JInternalFrame.html