JPanel...encore
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
Le problème est d'afficher une image dans un panel après un clic sur un bouton, alors que la modification de la couleur de fond fonctionne et que l'affichage est censé être géré par une fonction. Plusieurs réponses évoquent un problème d'écoute d'événements et de visibilité: le panel destinataire doit implémenter ActionListener et être correctement relié au bouton, par exemple via un setter. Il faut aussi assurer que le listener est partagé correctement entre frame et panels, en déclarant panel2 dans la frame et en ajoutant le DessineLevel10 au panel d'affichage lors de l'action. En cas de souci persistant, vérifier la visibilité des composants et la gestion du repaint dans le flux d'événements peut éviter les blocages.
-
Modérateursalut, il te suffit de faire appel de la méthode dans le constructeur de DessineLevel1
Chouba
Casque Bleu forumique -
Bon, j'ai mis un peu d'ordre dans mon prog, et la compil passe nickel. Maintenant, lors du clic, il va jusque dans le constructeur de la classe DessineLevel1, mais il semble pas lancer la methode paint(...); , car il ne me fait meme pas le System.out qu'il y a dedans....
Je lis et relis la doc, ms je ne vois pas: peut-etre y a t'il un truc que j'ai oublie?
La, j'avoue que je ne comprends pas... Je pense avoir atteinds mes limites en Java...
Enfin, je suis la pour aller plus loin, d'autant que j'ai pas le choix...
En tout cas merci de t'etre fait chier dans mon programme bordelique... ;-)
nico -
c'est parti, et encore merci...
Je continue a chercher de mon cote
Bon courage
nico -
Modérateurça va aller va 8)
je renvoie ça dès que possible
Chouba
Casque Bleu forumique -
ok je t'envoie ca tout de suite...
Bon courage,
nico. -
Modérateurbon, je te propose ceci
envoie moi ton code en fichier texte sur
uboot_70@yahoo.fr
je vais le vérifier, tester et compiler chez moi, ça te va?
Chouba
Casque Bleu forumique -
En fait, lors de la compilation il me dit qu'il ne connait pas DessineLevel1();
Et je viens de voir, qu'en fait, panel2 passe a la compil, mais qu'un panel2.setBackground(Color.red); n'est pas pris en compte (toujours au moment du clic)...
nico. -
Modérateurbon ben tu dois le déclarer pour le faire reconnaître alors
class JPanel2 extends JPanel implements ActionListener
{
private JPanel panel2 = new JPanel() "" ou alors tu dois le récupérer de quelque part""
public void actionPerformed(ActionEvent e)
{
System.out.println("monBoutonCbienCeluilaquimarche");
panel2.add(new DessineLevel10());
}
}
Chouba
Casque Bleu forumique -
panel2 est sense etre mon panel destinantaire, celui ou je veux dessiner un image.
nico -
Modérateurc'est quoi panel2????
il est déclaré où??
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 -
Modérateurok, le prob ne vient pas de là
tu peux me montrer le code où tu trouves
monPanel.add(new 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. -
Modérateurre
tu veux bien me montrer le code de ta classe DessineLevel1??
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 -
Modérateurquel est le message d'ereur à la compilation???
r
Chouba
Casque Bleu forumique -
Salut,
oui il n'y a pas de probleme de ce cote-la...
Nico. -
Modérateursalut
la classe se trouve t'elle dans le même package??
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. -
Merci bien, j'essaie ca tout de suite et je te dis ce qu'il en est.
nico.
- 1
- 2