Probleme de JPanel

minimouk Messages postés 7 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 22 mai 2004 - 1 mai 2004 à 16:08
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007 - 3 mai 2004 à 16:19
Salut a tous.
Bon j'explique.
J'ai pour projet de faire un jeux. J'ai donc envie de cree un menu dans une Applet qui fait apparaitre des JPanel au dessus du menu.
Vous comprenez?
bon mon probleme c que je n'arrive pas a faire fonctioner tout les elements du menu. seul le dernier ajouté fonctione
(enfin si on enleve les lignes de commentaires)

ici getContentPane().add(credits = new CreditsPanel());

La classe menu affiche un tableau avec des choses dedans
et quand on clique sur les case du tableau il renvoi qu'elle case a ete cliker.

Pourriez vous m'aidesiou plait???
Merci

-----------------------------------------
CODE
-----------------------------------------

public class LanceurApplet extends JApplet implements /*ActionListener,*/ MouseListener
{
private CasseBriquePanel jeux;
private CreditsPanel credits;
private Point choix =new Point(0,0);
private static Image[] images;
private URL base;

public void init()
{
System.out.println("initialisation");
addMouseListener(this);
setSize(getWidth(),getHeight());
getContentPane().add(jeux = new CasseBriquePanel());
jeux.setVisible(false);
// getContentPane().add(credits = new CreditsPanel());
// credits.setVisible(false);
setBackground(Color.black);
try
{
base = getDocumentBase();
}
catch (Exception e) {}
setPicts();
}

private void setPicts()
{
int nbImages=2;
String[] list = {"Brikoid.jpg.jpg","mini.jpg"};
images = new Image[nbImages];
for (int i=0 ; i<nbImages ; i++)
images[i]=getImage(base,list[i]);
}

public static Image getPict(int i)
{
return images[i];
}

public void mouseEntered (MouseEvent e) {}
public void mouseExited (MouseEvent e) {}
public void mousePressed (MouseEvent e){}
public void mouseReleased (MouseEvent e) {}
public void mouseClicked (MouseEvent e)
{
choix = e.getPoint();
System.out.println("Position:"+e.getX()+","+e.getY());
repaint();
}

public void paint(Graphics g)
{
String[] menuListe = {"Jouer","Statistiques","Options","Credits","Quitter"};
g.clearRect(0, 0, getWidth(), getHeight());
g.drawImage(getImage(base,"Brikoid.jpg"),0,0,getWidth(),getHeight(),this);

Menu menu = new Menu( getWidth()/2 , getHeight()/2-20 , 5 , new Color(0,255,0) , new Color(0,255,0) , 120 , 40 );
menu.Ajouter(menuListe , new Font("Helvetica",Font.PLAIN,20));
menu.dessiner(g);

int tmp=menu.choix(choix,g);
g.setColor(new Color(0,255,0));
switch(tmp)
{
case 0 : g.drawString("Jouer",50,50);
jeux.setVisible(true);
jeux.init();
jeux.start();
break;
case 1 : g.drawString("Stat",50,50) ;break;
case 2 : g.drawString("Opt",50,50) ;break;
case 3 : g.drawString("Cred",50,50) ;
// credits.setVisible(true);
// credits.init();
// credits.start();
break;
case 4 : System.exit(0);
break;
default : break;
}
}
}

-------------------------------------------
FIN
-------------------------------------------

9 réponses

dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
3 mai 2004 à 09:15
tu n'as pas mis de layout dans ton getContentPane(),
donc pas defaut c'est du FlowLayout...
et si tu ne passe pas de parametres, genre
getContentPane().add(credits = new CreditsPanel(),null);
il te remplace automatiquement l'avant dernier par le dernier...
donc soit tugardes ce flowlayout, et tu lui passe null en parametres comme ci dessus, soit tu specifie un autre layout avec d'autres params...
0
minimouk Messages postés 7 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 22 mai 2004
3 mai 2004 à 09:32
euh ca marche pas la methode avec null? et l'autre g pas encore tester.
Mais si il y a d'autres solutions n'hesiter pas.
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
3 mai 2004 à 09:55
Attends, ton pb c'est pour les japanels ou le menu?
J'suis pas sur de bien comprendre ton souci la...
C'est ca qui merde
menu.Ajouter(menuListe , new Font("Helvetica",Font.PLAIN,20));
ou
getContentPane().add(credits = new CreditsPanel());

faut que tu m'explique pourquoi tu fauire un paint de ton menu aussi dans la methode paint...
0
minimouk Messages postés 7 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 22 mai 2004
3 mai 2004 à 10:01
non c getContentPane().add(credits = new CreditsPanel());
qui merde
le menu marche tres bien
mais en fait le truc qui deconne c que le
jeux.setVisible(true);
ne mache pas (s'affiche pas) quand jeg met
getContentPane().add(credits = new CreditsPanel());
apres le
getContentPane().add(jeux = new CasseBriquePanel());
seul le
credits.setVisible(true);
marche

tu comprend?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
3 mai 2004 à 11:41
ok, c'est donc ce qyue je te disais un pb de layout...
essai de faire avant d'ajouter tes panels
getContentPane().setLayout(new GridLayout(1,2));
et tu vas voir...
enfin enleves les bon commentaires aussi...
0
minimouk Messages postés 7 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 22 mai 2004
3 mai 2004 à 12:18
arf c pas encore ca.
quand je clique sur le menu le panel ne ce chqrge que sur la moitie de la fenetre. j'ai essaye avec differente valeur mais rien a faire.
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
3 mai 2004 à 14:00
le FlowLayout de base doit marcher...
tu es sur que tu a bien essaye, en laissant le flowlayout de base, de mettre en parametre null?
getContentPane().add(credits = new CreditsPanel(),null);
car ca ca doit marcher...
tu peux essayer de faire un revalidate() de ton panel general...
c'est l'arme ultime quand ca veux pas s'afficher...
0
minimouk Messages postés 7 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 22 mai 2004
3 mai 2004 à 15:41
Oui je suis sur que j'ai mit le ,null)
sinon j'essayerais ce soir avec le revalidate();
esperons que ca fonctionne.
Merci beaucoup dmaillet
0
dmaillet Messages postés 500 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 11 juillet 2007
3 mai 2004 à 16:19
euh juste une chose que je viens de voir...
je ne suis pas un pro du graphisme 2D
moi c'est plutot le java3d
mais je crois qu'en fesant tes setVisble dans le paint(),
ca risque pas de marcher...
en effet au moment du paint, pour lui c'est pas visble, donc il l'affiche pas....
a mon avis, fais le setVisible en dehors puis un repiant ou revalidate, et la ca va marcher...
en plus tu devrais faire un super.paint(g); au depart, ce serait mieux...
0
Rejoignez-nous