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   -
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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