JPanel...encore
Fermé
nico
-
26 mai 2003 à 12:50
choubaka Messages postés 39412 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 16 janvier 2025 - 30 mai 2003 à 08:06
choubaka Messages postés 39412 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 16 janvier 2025 - 30 mai 2003 à 08:06
Je ne comprends pas pourquoi:
je ne sais pas pourquoi je n'arrive pas a afficher une image dans un panel apres un clique sur un bouton, alors que ma fonction d'affichage fonctionne, et que j'arrive a change la couleur de fond du panel destinataire a l'aide de la methode ActionPerformed de ce meme bouton sans probleme...
Ma question: y a t il un contexte a transmettre absoluement ou qqch dans le genre. J'ai l'impression qu'il y a une sorte de "barriere" a franchir dans l'ActionListener, et que je fonce tete baissee dedans...
Si qqun avait qqch pour eviter de me faire mal...
Merci.
Nico
je ne sais pas pourquoi je n'arrive pas a afficher une image dans un panel apres un clique sur un bouton, alors que ma fonction d'affichage fonctionne, et que j'arrive a change la couleur de fond du panel destinataire a l'aide de la methode ActionPerformed de ce meme bouton sans probleme...
Ma question: y a t il un contexte a transmettre absoluement ou qqch dans le genre. J'ai l'impression qu'il y a une sorte de "barriere" a franchir dans l'ActionListener, et que je fonce tete baissee dedans...
Si qqun avait qqch pour eviter de me faire mal...
Merci.
Nico
29 réponses
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
26 mai 2003 à 16:34
26 mai 2003 à 16:34
salut, ça doit être un probmlème au niveau de l'evènement, qui ne doit pas être bien traité, mais bon sans plus d'info ????????
Chouba
Casque Bleu forumique
Chouba
Casque Bleu forumique
je te donne en gros la structure de mon prg:
j'ai une classe qui me dessine l'image dans la fonction paint(); a l'aide de drawImage(...);
Cela fonctionne (affichage nickel) losrque je fais monPanel.add(new DessineImage());
Ensuite, j'ai un bouton qui implemente l'actionListener en appelant la fonction precedente en l'appelant de la meme maniere.
Pb, c'est comme si il n'y avait rien dans l'ActionPerformed, il ne se passe kedal...
C'est pas ce qui semble etre le plus complique en java, mais je m'avoue vaincu...
class DessineLevel1 extends JPanel
{
public DessineLevel1()
{
this.setSize(20,20);
}
public void paint(Graphics g)
{
super.paintComponent(g);
g.drawImage(niveau1, 0, 0, 181, 145,this);
}
public void update(Observable obs, Object o)
{
repaint();
}
}
monBouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
monPanel.add(new DessineLevel1());
}
});
Mon panel est cree directement dans le constructeur, comme tout le reste d'ailleurs...
Je sais pas ce qui pourrait t'aider plus.
Je sens que c'est une connerie qui me bloque, et elle doit etre tellement grosse que je ne la vois pas.
Si tu peux me filer le tuyau qui me sauvera la vie! Ok j'en demande un peu trop...
Merci,
nico.
j'ai une classe qui me dessine l'image dans la fonction paint(); a l'aide de drawImage(...);
Cela fonctionne (affichage nickel) losrque je fais monPanel.add(new DessineImage());
Ensuite, j'ai un bouton qui implemente l'actionListener en appelant la fonction precedente en l'appelant de la meme maniere.
Pb, c'est comme si il n'y avait rien dans l'ActionPerformed, il ne se passe kedal...
C'est pas ce qui semble etre le plus complique en java, mais je m'avoue vaincu...
class DessineLevel1 extends JPanel
{
public DessineLevel1()
{
this.setSize(20,20);
}
public void paint(Graphics g)
{
super.paintComponent(g);
g.drawImage(niveau1, 0, 0, 181, 145,this);
}
public void update(Observable obs, Object o)
{
repaint();
}
}
monBouton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
monPanel.add(new DessineLevel1());
}
});
Mon panel est cree directement dans le constructeur, comme tout le reste d'ailleurs...
Je sais pas ce qui pourrait t'aider plus.
Je sens que c'est une connerie qui me bloque, et elle doit etre tellement grosse que je ne la vois pas.
Si tu peux me filer le tuyau qui me sauvera la vie! Ok j'en demande un peu trop...
Merci,
nico.
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
27 mai 2003 à 07:42
27 mai 2003 à 07:42
monPanel.add(new DessineLevel1());
tu peux me préciser ce qu'est "monPanel" ?
Chouba
Casque Bleu forumique
tu peux me préciser ce qu'est "monPanel" ?
Chouba
Casque Bleu forumique
En fait, j'ai decoupe ma fenetre avec un BorderLayout(); puis le panel central en GridLayout(); =>monPanel.
Mon bouton se situe ds le panel est: je voudrai que ce bouton declenche un drawImage(..); dans un des panels du panel central.
Si je fais monPanel.add(new DessineLevel1()); en dehors de l'actionPerformed(); du bouton, l'image est dessinee sans probleme.
Par contre, des que je le mets dans l'actionPerformed(); du bouton, il ne se passe rien, il ne semble meme pas appeler la classe DessineLevel(); responsable du drawImage(...);
Forcement, j'oublie qqch qque part...
nico.
Mon bouton se situe ds le panel est: je voudrai que ce bouton declenche un drawImage(..); dans un des panels du panel central.
Si je fais monPanel.add(new DessineLevel1()); en dehors de l'actionPerformed(); du bouton, l'image est dessinee sans probleme.
Par contre, des que je le mets dans l'actionPerformed(); du bouton, il ne se passe rien, il ne semble meme pas appeler la classe DessineLevel(); responsable du drawImage(...);
Forcement, j'oublie qqch qque part...
nico.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
27 mai 2003 à 08:31
27 mai 2003 à 08:31
essaye ça...
class DessineLevel1 extends JPanel implements ActionListener
{
public DessineLevel1()
{
this.setSize(20,20);
}
public void paint(Graphics g)
{
super.paintComponent(g);
g.drawImage(niveau1, 0, 0, 181, 145,this);
}
public void update(Observable obs, Object o)
{
repaint();
}
}
monBouton.addActionListener(this);
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
monPanel.add(new DessineLevel1());
}
});
Chouba
Casque Bleu forumique
class DessineLevel1 extends JPanel implements ActionListener
{
public DessineLevel1()
{
this.setSize(20,20);
}
public void paint(Graphics g)
{
super.paintComponent(g);
g.drawImage(niveau1, 0, 0, 181, 145,this);
}
public void update(Observable obs, Object o)
{
repaint();
}
}
monBouton.addActionListener(this);
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
monPanel.add(new DessineLevel1());
}
});
Chouba
Casque Bleu forumique
J'ai essaye mais cela n'a pas fonctionne.
Alors, est-ce que la partie:
monBouton.addActionListener(this);
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
monPanel.add(new DessineLevel1());
}
});
doit faire partie de la classe DessineLevel1 ?
De plus, a la compilation, il ne veut pas de la ligne :
monBouton.addActionListener(this);
Il me dit qu'il attend un identifieur pour le this, et que le package monBouton n'existe pas.
Mes competences en java sont encore limitees, mais si tu ne peux plus m'aider, faudra bien que je me demmerde.
Merci,
nico.
Alors, est-ce que la partie:
monBouton.addActionListener(this);
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
monPanel.add(new DessineLevel1());
}
});
doit faire partie de la classe DessineLevel1 ?
De plus, a la compilation, il ne veut pas de la ligne :
monBouton.addActionListener(this);
Il me dit qu'il attend un identifieur pour le this, et que le package monBouton n'existe pas.
Mes competences en java sont encore limitees, mais si tu ne peux plus m'aider, faudra bien que je me demmerde.
Merci,
nico.
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
27 mai 2003 à 10:31
27 mai 2003 à 10:31
je cherche, je cherche
Chouba
Casque Bleu forumique
Chouba
Casque Bleu forumique
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
27 mai 2003 à 10:50
27 mai 2003 à 10:50
Bon, je vois, je vois
Le panel destinataire du dessin doit implémenter ActionListener
ton problème apparemment est un problème de visibilité
Bon je résume
par exemple:
Tu as ta frame principale qui contient deux panels
un panel (panel1) contient un bouton
l'autre (panel2) est chargé d'afficher le dessin
le panel2 doit implémenter ActionListener
pour que le bouton puisse reconnaître panel2 comme actionListener, la frame principale doit faire connaître panel2 à panel1. C'est à dire que la panel1 doit avoir comme attribut panel2 de manière à pouvoir l'utiliser avec le bouton.
public class maFrame{
private JPanel1 panel1
private JPanel2 panel2
private Container myContainer;
public maFrame(){
panel1 = new JPanel1();
panel2 = new JPanel2();
panel1.setListener(panel2);
panel1.initView();
}
}
public class JPanel1 {
private JPanel panel2Listener;
private JButton button;
public void setListener (JPanel2 panel2Listener){
this.panel2Listener = panel2Listener
}
public void initView(){
button = new JButton("button")
button.addActionListener(panel2Listener);
}
}
public classJPanel2 extends JPanel implements ActionListener
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
}
});
une solution possible????
Chouba
Casque Bleu forumique
Le panel destinataire du dessin doit implémenter ActionListener
ton problème apparemment est un problème de visibilité
Bon je résume
par exemple:
Tu as ta frame principale qui contient deux panels
un panel (panel1) contient un bouton
l'autre (panel2) est chargé d'afficher le dessin
le panel2 doit implémenter ActionListener
pour que le bouton puisse reconnaître panel2 comme actionListener, la frame principale doit faire connaître panel2 à panel1. C'est à dire que la panel1 doit avoir comme attribut panel2 de manière à pouvoir l'utiliser avec le bouton.
public class maFrame{
private JPanel1 panel1
private JPanel2 panel2
private Container myContainer;
public maFrame(){
panel1 = new JPanel1();
panel2 = new JPanel2();
panel1.setListener(panel2);
panel1.initView();
}
}
public class JPanel1 {
private JPanel panel2Listener;
private JButton button;
public void setListener (JPanel2 panel2Listener){
this.panel2Listener = panel2Listener
}
public void initView(){
button = new JButton("button")
button.addActionListener(panel2Listener);
}
}
public classJPanel2 extends JPanel implements ActionListener
public void actionPerformed(ActionEvent e)
{
System.out.println("monBouton");
}
});
une solution possible????
Chouba
Casque Bleu forumique
Le programme entre maintenant, avec ce que tu m'as donne, correctement dans l'ActionPerformed(); .
Seulement, maintenant il ne connait plus ma classe DessineLevel1,
losrque je l'appelle dans l'actionPerformed:
panel2.add(new DessineLevel1());
Dois-je declarer ma classe d'une maniere particuliere?
nico.
Seulement, maintenant il ne connait plus ma classe DessineLevel1,
losrque je l'appelle dans l'actionPerformed:
panel2.add(new DessineLevel1());
Dois-je declarer ma classe d'une maniere particuliere?
nico.
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
28 mai 2003 à 07:29
28 mai 2003 à 07:29
salut
la classe se trouve t'elle dans le même package??
Chouba
Casque Bleu forumique
la classe se trouve t'elle dans le même package??
Chouba
Casque Bleu forumique
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
28 mai 2003 à 12:25
28 mai 2003 à 12:25
quel est le message d'ereur à la compilation???
r
Chouba
Casque Bleu forumique
r
Chouba
Casque Bleu forumique
Voila le message que je recois lors de la compilation:
cannot resolve symbol
symbol : method DessineLevel1 ()
location: class myprojects.samplemove.DessineLevel1
monPanel.add(new DessineLevel1());
Si ca peut t'aider...
Je suis toujours sur ce probleme dps hier.
nico
cannot resolve symbol
symbol : method DessineLevel1 ()
location: class myprojects.samplemove.DessineLevel1
monPanel.add(new DessineLevel1());
Si ca peut t'aider...
Je suis toujours sur ce probleme dps hier.
nico
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
28 mai 2003 à 12:34
28 mai 2003 à 12:34
re
tu veux bien me montrer le code de ta classe DessineLevel1??
Chouba
Casque Bleu forumique
tu veux bien me montrer le code de ta classe DessineLevel1??
Chouba
Casque Bleu forumique
class DessineLevel1 extends JPanel
{
public DessineLevel1()
{
this.setSize(20,20);
System.out.println("Constlevel10");
}
public void paint(Graphics g)
{
super.paintComponent(g); System.out.println("\nje suis bien dedans");
boolean good1 = g.drawImage(niveau1, 0, 0, 181, 145,this);
}
}
Avec niveau1, l'image que j'ai chargee.
nico.
{
public DessineLevel1()
{
this.setSize(20,20);
System.out.println("Constlevel10");
}
public void paint(Graphics g)
{
super.paintComponent(g); System.out.println("\nje suis bien dedans");
boolean good1 = g.drawImage(niveau1, 0, 0, 181, 145,this);
}
}
Avec niveau1, l'image que j'ai chargee.
nico.
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
28 mai 2003 à 12:50
28 mai 2003 à 12:50
ok, le prob ne vient pas de là
tu peux me montrer le code où tu trouves
monPanel.add(new DessineLevel1()); ???
Chouba
Casque Bleu forumique
tu peux me montrer le code où tu trouves
monPanel.add(new DessineLevel1()); ???
Chouba
Casque Bleu forumique
Code qui se trouve ds la classe qui me lance tout:
class JPanel2 extends JPanel implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("monBoutonCbienCeluilaquimarche");
panel2.add(new DessineLevel10());
}
}
nico
class JPanel2 extends JPanel implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("monBoutonCbienCeluilaquimarche");
panel2.add(new DessineLevel10());
}
}
nico
choubaka
Messages postés
39412
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
16 janvier 2025
2 104
28 mai 2003 à 13:14
28 mai 2003 à 13:14
c'est quoi panel2????
il est déclaré où??
Chouba
Casque Bleu forumique
il est déclaré où??
Chouba
Casque Bleu forumique