OVH Cloud OVH Cloud

JLayeredPane et palette d'outils

7 réponses
Avatar
Arnaud
Hello !

J'ai une application avec une fenêtre principale organisée en plusieurs
cadres (grâce à un BorderLayout).

Je souhaiterais rajouter une boite à outils qui naviguerait par dessus. La
solution que j'ai trouvé est d'utiliser un JLayeredPane, mais mon problème
est que d'après la doc, il faut mettre le LayoutManager à "null", donc adieu
ma présentaion de fenêtre.

J'ai essayé de conserver mon BorderLayout et d'ajouter la boite à outils sur
la couche PALETTE_LAYER, mais effectivement, ça foire (je n'ai que ma boite
à outils dans la fenêtre, tout le reste est caché dessous).

Comment faire dans mon cas pour simplement ajouter cette boite à outils ?

merci d'avance

--
Arnaud

7 réponses

Avatar
Thibaut Desmarest
Arnaud wrote:
Hello !

J'ai une application avec une fenêtre principale organisée en plusieurs
cadres (grâce à un BorderLayout).

Je souhaiterais rajouter une boite à outils qui naviguerait par dessus. La
solution que j'ai trouvé est d'utiliser un JLayeredPane, mais mon problème
est que d'après la doc, il faut mettre le LayoutManager à "null", donc adieu
ma présentaion de fenêtre.

J'ai essayé de conserver mon BorderLayout et d'ajouter la boite à outils sur
la couche PALETTE_LAYER, mais effectivement, ça foire (je n'ai que ma boite
à outils dans la fenêtre, tout le reste est caché dessous).

Comment faire dans mon cas pour simplement ajouter cette boite à outils ?

merci d'avance

--
Arnaud





Je ne suis qu'un débutant et je vais peut être dire une connerie mais
est ce que tu ne peux pas tout simplement créer ton JLayeredPane (avec
son layout null). Et dedans tu mets ta boite à outil sur une couche
haute bien sur, et puis un autre JPanel sur une couche basse. C'est dans
ce JPanel que tu mets toutes fenêtres organisées via le borderLayout, et
ta toolBar devrait flotter au dessus.

Non ??

Bonne chance,


Thibaut

Avatar
arN
Thibaut Desmarest wrote:

Je ne suis qu'un débutant et je vais peut être dire une connerie mais
est ce que tu ne peux pas tout simplement créer ton JLayeredPane (avec
son layout null). Et dedans tu mets ta boite à outil sur une couche
haute bien sur, et puis un autre JPanel sur une couche basse. C'est dans
ce JPanel que tu mets toutes fenêtres organisées via le borderLayout, et
ta toolBar devrait flotter au dessus.

Non ??

Bonne chance,


Thibaut


bin, à vrai dire, c'est pas bête, je n'y avais pas pensé.

Je vais essayer, merci

--
Arnaud

Avatar
arN
ça marche pas terrible, terrible ...

J'ajoute :
- un JPanel avec un BorderLayout et tous mes composants graphiques sur le
DEFAULT_LAYER
- ma boite à outils sur le PALETTE_LAYER

Seulement, le problème est que le JPanel ne se redimensionne pas tout seul.
Alors, autant je peux arriver à afficher ce que je veux en tatonnant un peu
au départ, autant dès que l'utilisateur redimmensionne la fenêtre, c'est le
bazar.

Il me faudrait arriver à calculer la taille interne de la fenêtre, barre de
menu déduite, et rafraichir la taille du JPanel à chaque redimensionnement
de fenêtre, mais je trouve ça un peu compliqué.

N'y a-t-il pas plus simple ? (il doit y avoir, sinon je ne vois pas trop
l'intérêt du layeredpane si c'est si compliqué à mettre en oeuvre)

merci quand même pour la piste

--
Arnaud
Avatar
Thibaut Desmarest
arN wrote:

ça marche pas terrible, terrible ...

J'ajoute :
- un JPanel avec un BorderLayout et tous mes composants graphiques sur le
DEFAULT_LAYER
- ma boite à outils sur le PALETTE_LAYER

Seulement, le problème est que le JPanel ne se redimensionne pas tout seul.
Alors, autant je peux arriver à afficher ce que je veux en tatonnant un peu
au départ, autant dès que l'utilisateur redimmensionne la fenêtre, c'est le
bazar.

Il me faudrait arriver à calculer la taille interne de la fenêtre, barre de
menu déduite, et rafraichir la taille du JPanel à chaque redimensionnement
de fenêtre, mais je trouve ça un peu compliqué.

N'y a-t-il pas plus simple ? (il doit y avoir, sinon je ne vois pas trop
l'intérêt du layeredpane si c'est si compliqué à mettre en oeuvre)

merci quand même pour la piste

--
Arnaud



Bien sur qu'il y'a plus simple !! Désolé d'avoir été si long à la
détente précedemment !! Je ne sais pas pourquoi je suis parti sur cette
idée de JLayeredPane. Tu trouveras ton bonheur avec la classe JToolBar !

Il suffit de setFloatable(true);

oublie pas que Sun ils disent que c'est mieux de l'ajouter dans un
BorderLayout qui soit vierge de tout composants à part au centre (bien
sur)... Enfin je te laisse lire ta JavaDoc sur la JToolBar...

Avatar
arN
MERCI !!!

C'est pile ce qu'il me fallait. Seul problème, en la déplaçant, elle
disparait parfois sous les composants latéraux de mon BorderLayout et
impossible de la retrouver. Ca doit être en rapport avec ce que tu me
disais.

Je vais lire la doc ...

--
Arnaud
Avatar
Thibaut Desmarest
arN wrote:

MERCI !!!

C'est pile ce qu'il me fallait. Seul problème, en la déplaçant, elle
disparait parfois sous les composants latéraux de mon BorderLayout et
impossible de la retrouver. Ca doit être en rapport avec ce que tu me
disais.

Je vais lire la doc ...

--
Arnaud


Oui surement ! Je t'avais bien dit de faire attention à ça ! Je pense
qu'il faut vraiment ne mettre QUE la JToolBar dans le premier
BorderLayout. Ensuite tu mets ton Panel au centre de celui-ci.

Mais je pense qu'à l'heure qu'il est tu as déjà du corriger celà...

Bonne chance pour la suite,


Thibaut

Avatar
arN
Thibaut Desmarest wrote:

arN wrote:

MERCI !!!

C'est pile ce qu'il me fallait. Seul problème, en la déplaçant, elle
disparait parfois sous les composants latéraux de mon BorderLayout et
impossible de la retrouver. Ca doit être en rapport avec ce que tu me
disais.

Je vais lire la doc ...

--
Arnaud


Oui surement ! Je t'avais bien dit de faire attention à ça ! Je pense
qu'il faut vraiment ne mettre QUE la JToolBar dans le premier
BorderLayout. Ensuite tu mets ton Panel au centre de celui-ci.

Mais je pense qu'à l'heure qu'il est tu as déjà du corriger celà...

Bonne chance pour la suite,


Thibaut


Bon, ben finalement, ça ne me convient pas terrible comme solution car j'ai
une barre d'outils qui se scotche sur les côtés de la fenêtre principale.

J'aurais voulu vraiment avoir une barre d'outils qui ait l'allure d'une
fenêtre et qui ne se réintègre pas dans la fenêtre principale.

Je vais lancer un autre post avec un aperçu de mon code pour voir

encore merci

--
Arnaud