Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

composant graphique "static"

5 réponses
Avatar
Aurel
Bonjour,

J'ai créé une IHM utilisant 3 onglets (JTabbedPane).
Dans chacun de ces 3 onglets, j'ai mis un JPanel qui est exactement le même
dans les 3 onglets (je veux dire, la même instance)...

Je crée donc ce JPanel puis l'ajoute aux 3 onglets mais il n'apparaît que
dans le dernier auquel je l'ai ajouté...

il y a sans doute une explication simple ou alors une manière simple de lui
donner le focus dans les autres onglets, mais laquelle ?

Merci d'avance pour votre aide :)

AureL

5 réponses

Avatar
Nico
"Aurel" a écrit dans le message de
news:RNXCd.40565$P%
Bonjour,

J'ai créé une IHM utilisant 3 onglets (JTabbedPane).
Dans chacun de ces 3 onglets, j'ai mis un JPanel qui est exactement le
même

dans les 3 onglets (je veux dire, la même instance)...

Je crée donc ce JPanel puis l'ajoute aux 3 onglets mais il n'apparaît que
dans le dernier auquel je l'ai ajouté...

il y a sans doute une explication simple ou alors une manière simple de
lui

donner le focus dans les autres onglets, mais laquelle ?



L'explication simple c'est sans doute : Component.getParent(), càd qu'un
composant ne peut appartenir qu'à un seul parent à la fois (à priori donc le
dernier auquel il a été ajouté).

Pourquoi mettre la même instance dans les trois onglets ?
Si tu fais 3 onglets, c'est sans doute pour saisir des valeurs différentes
dans chacun des onglets, il va donc falloir des instances différentes.

Nicolas

Avatar
Aurel
Ahhhh.... bah voilà ma réponse :-)
Merci !

En fait, je voulais faire ça car mon JPanel commun aux 3 onglets est une
zone de prévisualisation qui est identique aux 3 onglets et qui évoluent au
fur et à mesure... donc c'était pour éviter de mettre à jour cette zone 3
fois à chaque modification d'un paramètre dans un onglet...


"Nico" a écrit dans le message de news:
41dc4e7e$0$23336$

"Aurel" a écrit dans le message de
news:RNXCd.40565$P%
Bonjour,

J'ai créé une IHM utilisant 3 onglets (JTabbedPane).
Dans chacun de ces 3 onglets, j'ai mis un JPanel qui est exactement le
même

dans les 3 onglets (je veux dire, la même instance)...

Je crée donc ce JPanel puis l'ajoute aux 3 onglets mais il n'apparaît que
dans le dernier auquel je l'ai ajouté...

il y a sans doute une explication simple ou alors une manière simple de
lui

donner le focus dans les autres onglets, mais laquelle ?



L'explication simple c'est sans doute : Component.getParent(), càd qu'un
composant ne peut appartenir qu'à un seul parent à la fois (à priori donc
le
dernier auquel il a été ajouté).

Pourquoi mettre la même instance dans les trois onglets ?
Si tu fais 3 onglets, c'est sans doute pour saisir des valeurs différentes
dans chacun des onglets, il va donc falloir des instances différentes.

Nicolas





Avatar
Nico
"Aurel" a écrit dans le message de
news:CkYCd.40603$P%
Ahhhh.... bah voilà ma réponse :-)
Merci !

En fait, je voulais faire ça car mon JPanel commun aux 3 onglets est une
zone de prévisualisation qui est identique aux 3 onglets et qui évoluent
au

fur et à mesure... donc c'était pour éviter de mettre à jour cette zone 3
fois à chaque modification d'un paramètre dans un onglet...


Pour faire çà "propre", je crois qu'il faut utiliser les modèles en les
partageant entre les composants graphiques des 3 zones. Mais je suis pas sur
que ca soit plus simple à faire que mettre à jour 3 fois la zone ; )

Avatar
Jocelyn
Salut
La solution la plus logique est de mettre cette zone commune
au-dessus de tes onglets et non pas a l'interieur. Reste a voir
si c'est acceptable graphiquement parlant...
Sinon, la solution se trouve probablement dans l'utilisation de
l'interface ChangeListener: tu ecoutes les selections d'onglet et
quand un onglet est selectionne tu lui ajoutes cette zone. De cette
maniere elle se trouve en un seul endroit mais donne l'impression
d'etre dans tous les onglets.
++
Avatar
Aurel
Merci pour toutes ces idées :-)

En fait, la solution que j'ai adopté est la tienne... j'ai créé une seule
instance de cette zone et dès que je change d'onglet, je faire un remove()
de cette zone et un add() dans le nouvel onglet... et ça fonctionne :-)

voili !

AureL


"Jocelyn" a écrit dans le message de news:
41dcfabd$0$3531$
Salut
La solution la plus logique est de mettre cette zone commune
au-dessus de tes onglets et non pas a l'interieur. Reste a voir
si c'est acceptable graphiquement parlant...
Sinon, la solution se trouve probablement dans l'utilisation de
l'interface ChangeListener: tu ecoutes les selections d'onglet et
quand un onglet est selectionne tu lui ajoutes cette zone. De cette
maniere elle se trouve en un seul endroit mais donne l'impression
d'etre dans tous les onglets.
++