JMenu et JApplet : le menu est masqué

JMenu et JApplet : le menu est masqué - Java - Programmation

Marsh Posté le 03-04-2004 à 19:46:29    

Bonjour,
 
J'ai un JApplet et je veux lui rajouter un menu. La barre s'affiche mais quand je clique sur un JMenu il ne se déroule pas. Si je "vide" mon applet ca marche bien, mais sinon on a l'impression que le JMenu se déroule en arriere plan et qu'il est masqué par l'affichage du JApplet.
 
Exemple :
 

Code :
  1. import javax.swing.JApplet;
  2. import javax.swing.JMenuBar;
  3. import javax.swing.JMenu;
  4. import javax.swing.JMenuItem;
  5. public class Main extends JApplet {
  6. JMenuBar menuBar ;
  7. JMenu menu1 ;
  8. JMenuItem onePlayer;
  9. JMenuItem twoPlayers;
  10. Tetris tetris1 = new Tetris();
  11. Test test = new Test();
  12. public void init() {
  13.  menuBar = new JMenuBar();
  14.  menu1 = new JMenu("Jouer" );
  15.  onePlayer = new JMenuItem("1 joueur" );;
  16.  twoPlayers = new JMenuItem("2 joueurs" );
  17.  getContentPane().add(tetris1);
  18.  menu1.add(onePlayer);
  19.  menu1.add(twoPlayers);
  20.  menuBar.add(menu1);
  21.  setJMenuBar(menuBar);
  22. }
  23. }


 
Voila, par contre si je commente la ligne   getContentPane().add(tetris1); ben là mon menu s'affiche bien.
 
Dans mon exemple la classe Tetris étend elle aussi JApplet. J'ai essayé en inscrustant le menu directement dans Tetris mais le résultat est le même...
 
Si j'ai ete suffisamment clair (...) quelqu'un peut m'aider ?

Reply

Marsh Posté le 03-04-2004 à 19:46:29   

Reply

Marsh Posté le 03-04-2004 à 22:26:23    

Personne n'as d'idée ? C'est un probleme assez classique je pense mais je n'arrive pas à trouver comment faire.

Reply

Marsh Posté le 04-04-2004 à 22:43:40    

souliane a écrit :


Voila, par contre si je commente la ligne   getContentPane().add(tetris1); ben là mon menu s'affiche bien.

on peut voir le code de tetris1 ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-04-2004 à 01:00:11    

Euhhh non, je suis entrain de tout refaire...
 
Je n'ai pas vraiment résolu le probleme car je ne sais pas assez comment fonctionne swing mais c'etait une histoire de paintComponent à la place de paint. En remplacant seulement ca je voyais mon menu mais le probleme ensuite, c'etait que celui ci, lorsqu'il s'affichait, effacer ce qu'il y avait "en dessous". Il m'aurait fallu un système de calques comme dans Photoshop, sans doute avec JLayeredPane ou un truc de ce genre... Humpf, j'ai préféré tout recommencé.

Reply

Marsh Posté le 05-04-2004 à 01:24:33    

souliane a écrit :

En remplacant seulement ca je voyais mon menu mais le probleme ensuite, c'etait que celui ci, lorsqu'il s'affichait, effacer ce qu'il y avait "en dessous". Il m'aurait fallu un système de calques comme dans Photoshop, sans doute avec JLayeredPane ou un truc de ce genre... Humpf, j'ai préféré tout recommencé.

http://java.sun.com/docs/books/tut [...] ayeredpane
 
sinon, je peux savoir ce que tu fais avec paintBidule() ? Un concours de lenteur ?
 
Tu es un suppot (et au lit) des "swing c'est lent" en train de démontrer la chose ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-04-2004 à 01:48:12    

> sinon, je peux savoir ce que tu fais avec paintBidule() ?
> Un concours de lenteur ?
 
Pourrais tu etre plus clair ?
 
> Tu es un suppot (et au lit) des "swing c'est lent" en train de
> démontrer la chose ?
 
C'est francais cette phrase !?

Reply

Marsh Posté le 05-04-2004 à 10:33:58    

souliane a écrit :

> sinon, je peux savoir ce que tu fais avec paintBidule() ?
> Un concours de lenteur ?
 
Pourrais tu etre plus clair ?
 
> Tu es un suppot (et au lit) des "swing c'est lent" en train de
> démontrer la chose ?
 
C'est francais cette phrase !?

1) Toucher à paintBidule() c'est globalement mal, en particulier pour les débutants. Et tout est fait dans swing pour limiter au maximum l'utilisation de ça.
 
2) c'est incontestablement une suite de mots français, de là à dire que ça forme une phrase ...


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-04-2004 à 11:08:03    

> Toucher à paintBidule() c'est globalement mal
 
Mais ça m'a permis d'afficher mes menus (ça effacait aussi ce qu'il y avait en dessous). Et sur certains sites j'ai vu qu'il fallait utiliser paintComponent() à la place de paint() lorsqu'on passe de awt à swing...

Reply

Marsh Posté le 05-04-2004 à 11:14:05    

souliane a écrit :

Mais ça m'a permis d'afficher mes menus (ça effacait aussi ce qu'il y avait en dessous). Et sur certains sites j'ai vu qu'il fallait utiliser paintComponent() à la place de paint() lorsqu'on passe de awt à swing...

Là n'est pas le problème. Tu l'utilise pour peindre quoi ? Dans la marche normale des choses, on ne touche pas aux fonctions de peinture.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-04-2004 à 11:26:35    

Je paint des carrés et je fait des lignes, des drawString()... bon en fait je ma méthode s'appelait paintComponent() mais en l'appelant autrement, tant que ce n'était pas paint(), ça marchait aussi il me semble.

Reply

Marsh Posté le 05-04-2004 à 11:26:35   

Reply

Marsh Posté le 06-04-2004 à 00:28:06    

souliane a écrit :

Bonjour,
 
J'ai un JApplet et je veux lui rajouter un menu. La barre s'affiche mais quand je clique sur un JMenu il ne se déroule pas. Si je "vide" mon applet ca marche bien, mais sinon on a l'impression que le JMenu se déroule en arriere plan et qu'il est masqué par l'affichage du JApplet.
 
Exemple :
 

Code :
  1. import javax.swing.JApplet;
  2. import javax.swing.JMenuBar;
  3. import javax.swing.JMenu;
  4. import javax.swing.JMenuItem;
  5. public class Main extends JApplet {
  6. JMenuBar menuBar ;
  7. JMenu menu1 ;
  8. JMenuItem onePlayer;
  9. JMenuItem twoPlayers;
  10. Tetris tetris1 = new Tetris();
  11. Test test = new Test();
  12. public void init() {
  13.  menuBar = new JMenuBar();
  14.  menu1 = new JMenu("Jouer" );
  15.  onePlayer = new JMenuItem("1 joueur" );;
  16.  twoPlayers = new JMenuItem("2 joueurs" );
  17.  getContentPane().add(tetris1);
  18.  menu1.add(onePlayer);
  19.  menu1.add(twoPlayers);
  20.  menuBar.add(menu1);
  21.  setJMenuBar(menuBar);
  22. }
  23. }


 
Voila, par contre si je commente la ligne   getContentPane().add(tetris1); ben là mon menu s'affiche bien.
 
Dans mon exemple la classe Tetris étend elle aussi JApplet. J'ai essayé en inscrustant le menu directement dans Tetris mais le résultat est le même...
 
Si j'ai ete suffisamment clair (...) quelqu'un peut m'aider ?


essaye avec getContentPane().add(tetris1,"Center" ); pour voir ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed