-
[AWT] plusieurs couches
Salut,
J'ai un composant AWT ActiveX (qui étend Canvas) (je ne peux pas avoir ce composant autrement qu'en AWT).
Il se trouve dans un JPanel (tout le reste de l'appli est en Swing). Je souhaiterais que ce composant ActiveX s'adapte à la taille de la fenêtre (ça ça n'est pas dur, il suffit de le mettre dans un BorderLayout au centre).
Le problème, c'est que je souhaiterais pouvoir ajouter un panel PAR-DESSUS le composant ActiveX, en coordonnées absolues. Et donc pour faire cela, il faut que le layout soit null.
Comment faire "proprement" (à part écouter le redimensionnement et mettre en coordonnées absolues le composant ActiveX)?
-
Salut,
As-tu essayé un GlassPane ? Tu auras peut-être des difficultés à cause du fait que ton composant est en AWT, mais ça se résoud.
[EDIT] En fait, c'est un peu barbare comme solution, il faudra gérer les évènements et tout ça.
Sinon, un PopupMenu ? Ou un JPopupMenu (pas sûr que ça marche) ?
-
Pour mettre quelque chose au-dessus d'un composant, nul besoin de layout null; Il suffit d'accéder au JRootPane de la frame contenant le composant puis d'accéder au JLayeredPane. Tu peux aussi utiliser un glass pane voire mettre ton composant dans un JLayeredPane que tu mets ensuite dans ton BorderLayout.
Mais un composant AWT est **toujours** dessiné au-dessus des composants Swing donc tu ne pourras pas mettre de composant Swing au-dessus de ton ActiveX.
Bref, jette un oeil au JLayeredPane.