Mettre une condition sur un affichage

Résolu/Fermé
sansordi Messages postés 80 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 23 janvier 2018 - 22 sept. 2015 à 12:31
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 23 sept. 2015 à 08:49
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.

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
22 sept. 2015 à 19:47
Bonjour,

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.
0
sansordi Messages postés 80 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 23 janvier 2018
22 sept. 2015 à 23:30
Merci pour la condition, elle était toute bête mais je ne l'avais pas en tête!
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)
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
23 sept. 2015 à 07:47
C'est quoi pour toi une fenêtre ?

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.
0
sansordi Messages postés 80 Date d'inscription lundi 19 novembre 2007 Statut Membre Dernière intervention 23 janvier 2018
23 sept. 2015 à 08:29
je parle des InternalFrame, donc ils sont forcement dans une JFrame. Et est que cette JFrame doit contenir un JPanel pour faire appel au InternalFrame ou ce n'est pas nécéssaire?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
23 sept. 2015 à 08:49
Les InternalFrame n'étendent pas Window donc on ne devrait pas parler de fenêtre (ce qui est normal vu qu'elles sont inclues dans la JFrame).

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
0