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

[JTabbedPane in JFrame]Affichage correct des JPanels sélectionnés

4 réponses
Avatar
Daniel Moyne
J'ai un JFrame avec un JTabbedPane ; j'ajoute mais aussi retire certains
tabs avec mon application ; chaque tab est constitué ou d'un JPanel ou d'un
autre JTabbedPane avec d'autres JPanels aussi ajoutés ou retirés par mon
application ; Chaque JPanel bien que de dimension fixe à une taille
spécifique ; quand je sélectionne un JPanel ou un JTabbedPane je veux que
l'affichage soit correct :
. avec un ascenseur vertical en relation avec la hauteur du JFrame et la
hauteur max du JPanel,
. avec un ascenseur horizontal en relation avec la largeur du JFrame et la
largeur max du JPanel.

Faut-il à chaque sélection de tab refaire un setPreferredSize() sur le
principal JTabbePane ?

4 réponses

Avatar
Yliur
Le Tue, 07 Dec 2010 20:25:31 +0100
Daniel Moyne a écrit :

J'ai un JFrame avec un JTabbedPane ; j'ajoute mais aussi retire
certains tabs avec mon application ; chaque tab est constitué ou d'un
JPanel ou d'un autre JTabbedPane avec d'autres JPanels aussi ajoutés
ou retirés par mon application ; Chaque JPanel bien que de dimension
fixe à une taille spécifique ; quand je sélectionne un JPanel ou un
JTabbedPane je veux que l'affichage soit correct :
. avec un ascenseur vertical en relation avec la hauteur du JFrame et
la hauteur max du JPanel,
. avec un ascenseur horizontal en relation avec la largeur du JFrame
et la largeur max du JPanel.

Faut-il à chaque sélection de tab refaire un setPreferredSize() sur
le principal JTabbePane ?



Hum... je n'ai pas très bien compris. Pourquoi redimensionner le
JTabbedPane principal (le parent des autres ?) si tu ne fais que
sélectionner l'un de ses onglets ?

Si j'ai bien compris tu as une hiérarchie de composants comme ça :
JTabbedPane
JTabbedPane
JPanel
JPanel
JTabbedPane
JPanel
JPanel
JPanel

Un panneau à onglets et dans les onglets soit des panneaux simples soit
des sous-panneaux à onglets. C'est bien ça ?

Et cette hiérarchie peut être modifiée par l'application.

Je ne comprends pas cette phrase : "Chaque JPanel bien que de dimension
fixe à une taille spécifique".

L'affichage que tu décrits en deux points, s'agit-il de l'intérieur de
l'onglet sélectionné ?
Avatar
Daniel Moyne
Yliur wrote:

Le Tue, 07 Dec 2010 20:25:31 +0100
Daniel Moyne a écrit :

J'ai un JFrame avec un JTabbedPane ; j'ajoute mais aussi retire
certains tabs avec mon application ; chaque tab est constitué ou d'un
JPanel ou d'un autre JTabbedPane avec d'autres JPanels aussi ajoutés
ou retirés par mon application ; Chaque JPanel bien que de dimension
fixe à une taille spécifique ; quand je sélectionne un JPanel ou un
JTabbedPane je veux que l'affichage soit correct :
. avec un ascenseur vertical en relation avec la hauteur du JFrame et
la hauteur max du JPanel,
. avec un ascenseur horizontal en relation avec la largeur du JFrame
et la largeur max du JPanel.

Faut-il à chaque sélection de tab refaire un setPreferredSize() sur
le principal JTabbePane ?



Hum... je n'ai pas très bien compris. Pourquoi redimensionner le
JTabbedPane principal (le parent des autres ?) si tu ne fais que
sélectionner l'un de ses onglets ?


voir plus bas
Si j'ai bien compris tu as une hiérarchie de composants comme ça :
JTabbedPane
JTabbedPane
JPanel
JPanel
JTabbedPane
JPanel
JPanel
JPanel

Un panneau à onglets et dans les onglets soit des panneaux simples soit
des sous-panneaux à onglets. C'est bien ça ?


oui, voir plus bas.
Et cette hiérarchie peut être modifiée par l'application.


oui un onglet (=tab) JPanel peut disparaître ou être ajouté, où qu'il soit,
voire un JTabbedPane onglet dans le JTabbedPane principal qui lui aussi peut
être ajouté ou retiré (je verrai s'il n'est pas préférable de les masquer
mais je ne veux pas aborder ce point ici) ; cela pourrait être encore
+complexe si l'application agrandissait elle-même les JPanels par ajout
d'objets, mais heureusement ce n'est pas la cas ici.
Je ne comprends pas cette phrase : "Chaque JPanel bien que de dimension
fixe à une taille spécifique".


ce que je veux dire c'est que chaque JPanel construit avec NetBeans à des
dimensions fixes (w, h), mais ces dimensions varient d'un JPanel à l'autre ;
pour ce qui est des JTabbedPane onglets ils sont "vides" à l'ajout, puis
j'ajoute les JPanels onglets ensuite dedans.
L'affichage que tu décrits en deux points, s'agit-il de l'intérieur de
l'onglet sélectionné ?


oui puique au bout du compte le JFrame présente de par la stucture toujours
un JPanel : soit un JPanel onglet du JTabbedPane principal, soit un JPanel
onglet d'un JTabbedPane onglet ; d'où ma question relative à la partie
visible de ce JPanel en rapport avec les dimensions de la fenêtre.

Je vais maintenant apporter des infos complémentaires :
- tout d'abord ce que constate ; pour un JPanel particulier le plus "grand"
en terme de hauteur qui est un des onglets d'un JtabbedPane onglet (c'est
probablement de là que vient le problème), quand je le sélectionne je ne
vois que la partie haute même avec l'ascenseur vertical en partie basse ;
pour en voir plus il me faut agrandir la fenêtre vers le bas, ce qui n'est
pas acceptable ; il semble que ce sont les JPanels onglets du JTabbedPane
principal qui fixent cette "hauteur" car pour eux aucun problème avec
l'ascenceur vertical j'ai accès à tout.

- Pour information je développe avec NetBeans ; au départ je construisais
tout directement dans la classe du JTabbedPane principal et donc avec des
ajustages de dimension pour chacun des composants directement (j'imagine que
cela avait un impact direct sur les "preferredSize" des composants) ; alors
tout était visible ; les problèmes sont apparus quand j'ai voulu gérer les
composants comme des objets séparés (parce qu'ils vont servir ailleurs) dans
des classes distinctes ce qui est de plus très pratique.

Dans ce cas là la question est :
- le JTabbedPane principal gère-t-il tout cela automatiquement à l'ajout des
composants, ou faut-il avec un listener faire au coup par coup des ajustages
des setPreferredSize du JtabbedPrincipal en fonction des dimensions w,h des
composants onglets comme le suggérait une personne sur un site.

Amicalement.
Avatar
Christian Laborde
pack() sur un container donne sa PreferredSize à chaque
composant. Si la PreferredSize ne convient pas, on peut
faire un setMaximum(true) sur chaque composant à sa création.
Salut.

Daniel Moyne a écrit :
Yliur wrote:

Le Tue, 07 Dec 2010 20:25:31 +0100
Daniel Moyne a écrit :

J'ai un JFrame avec un JTabbedPane ; j'ajoute mais aussi retire
certains tabs avec mon application ; chaque tab est constitué ou d'un
JPanel ou d'un autre JTabbedPane avec d'autres JPanels aussi ajoutés
ou retirés par mon application ; Chaque JPanel bien que de dimension
fixe à une taille spécifique ; quand je sélectionne un JPanel ou un
JTabbedPane je veux que l'affichage soit correct :
. avec un ascenseur vertical en relation avec la hauteur du JFrame et
la hauteur max du JPanel,
. avec un ascenseur horizontal en relation avec la largeur du JFrame
et la largeur max du JPanel.

Faut-il à chaque sélection de tab refaire un setPreferredSize() sur
le principal JTabbePane ?


Hum... je n'ai pas très bien compris. Pourquoi redimensionner le
JTabbedPane principal (le parent des autres ?) si tu ne fais que
sélectionner l'un de ses onglets ?


voir plus bas
Si j'ai bien compris tu as une hiérarchie de composants comme ça :
JTabbedPane
JTabbedPane
JPanel
JPanel
JTabbedPane
JPanel
JPanel
JPanel

Un panneau à onglets et dans les onglets soit des panneaux simples soit
des sous-panneaux à onglets. C'est bien ça ?


oui, voir plus bas.
Et cette hiérarchie peut être modifiée par l'application.


oui un onglet (=tab) JPanel peut disparaître ou être ajouté, où qu'il soit,
voire un JTabbedPane onglet dans le JTabbedPane principal qui lui aussi peut
être ajouté ou retiré (je verrai s'il n'est pas préférable de les masquer
mais je ne veux pas aborder ce point ici) ; cela pourrait être encore
+complexe si l'application agrandissait elle-même les JPanels par ajout
d'objets, mais heureusement ce n'est pas la cas ici.
Je ne comprends pas cette phrase : "Chaque JPanel bien que de dimension
fixe à une taille spécifique".


ce que je veux dire c'est que chaque JPanel construit avec NetBeans à des
dimensions fixes (w, h), mais ces dimensions varient d'un JPanel à l'autre ;
pour ce qui est des JTabbedPane onglets ils sont "vides" à l'ajout, puis
j'ajoute les JPanels onglets ensuite dedans.
L'affichage que tu décrits en deux points, s'agit-il de l'intérieur de
l'onglet sélectionné ?


oui puique au bout du compte le JFrame présente de par la stucture toujours
un JPanel : soit un JPanel onglet du JTabbedPane principal, soit un JPanel
onglet d'un JTabbedPane onglet ; d'où ma question relative à la partie
visible de ce JPanel en rapport avec les dimensions de la fenêtre.

Je vais maintenant apporter des infos complémentaires :
- tout d'abord ce que constate ; pour un JPanel particulier le plus "grand"
en terme de hauteur qui est un des onglets d'un JtabbedPane onglet (c'est
probablement de là que vient le problème), quand je le sélectionne je ne
vois que la partie haute même avec l'ascenseur vertical en partie basse ;
pour en voir plus il me faut agrandir la fenêtre vers le bas, ce qui n'est
pas acceptable ; il semble que ce sont les JPanels onglets du JTabbedPane
principal qui fixent cette "hauteur" car pour eux aucun problème avec
l'ascenceur vertical j'ai accès à tout.

- Pour information je développe avec NetBeans ; au départ je construisais
tout directement dans la classe du JTabbedPane principal et donc avec des
ajustages de dimension pour chacun des composants directement (j'imagine que
cela avait un impact direct sur les "preferredSize" des composants) ; alors
tout était visible ; les problèmes sont apparus quand j'ai voulu gérer les
composants comme des objets séparés (parce qu'ils vont servir ailleurs) dans
des classes distinctes ce qui est de plus très pratique.

Dans ce cas là la question est :
- le JTabbedPane principal gère-t-il tout cela automatiquement à l'ajout des
composants, ou faut-il avec un listener faire au coup par coup des ajustages
des setPreferredSize du JtabbedPrincipal en fonction des dimensions w,h des
composants onglets comme le suggérait une personne sur un site.

Amicalement.



--
Christian Laborde
La Révolution citoyenne, c'est sur : http://c.lab.over-blog.com/
Les citoyens qui voient Net : http://www.netoyens.info
True E-mail : remove -no-spam-
Sentier des Vinches
CH 1091 Grandvaux
Suisse
Avatar
Daniel Moyne
Christian Laborde wrote:

pack() sur un container donne sa PreferredSize à chaque
composant. Si la PreferredSize ne convient pas, on peut
faire un setMaximum(true) sur chaque composant à sa création.
Salut.


Peux-tu expliquer la signification de ce commentaire dans mon cas et par
ailleurs c'est quoi le container ici :
- (1) le JFrame contenant le JTabbedPane principal ?
- (2) ou le JTabbedPane principal ? (et même chose pour les JTabbedPane
onglet si (2) s'applique vis a vis de ses propres composants).

Ensuite comme la situation est modifiée à chaque ajout ou retrai de
composant faut-il faire pack() chaque fois dans un listener ¿
Amicalement.