Voila mon probléme,je code un FishEye menu,et pour ce faire chaque "icon" est un jpanel que j'ajoute les un apres les autres.
Bref,tout ceci marche à merveille,sauf que je souhaiterait que mon dernier icon soit un peu différent.J'ai donc créée une nouvelle class qui extend JPanel.dans cette class j'ai une méthode paintComponent qui ne passe jamais!!why?
voici le code de mes 2 méthodes (celle qui appel paintComponent et l'autre)
le truc c'est que ma méthode paintComponent n'est jamais appelé!pourtant j'ai tout essayé paint,repaint,paintComponent,paintball et pentakill ,mais rien ne marche...
ps:si j'appel ma méthode paintComponent via :
this.paintComponent(getGraphics());
j'ai un beau nullPointerException... lors de l'appel de super.paintComthis(g);
Et sinon, paintComponent est une méthode public, pas protected.
Faux paintComponent (Graphic g) est bien protected (justement pour ne pas avoir la possibilité de l'appeler depuis l'extérieur) voir la class JComponent.
protected void paintComponent(Graphics g)
Pour compléter la réponse de #brubru777 tu peux utiliser les méthodes :
La méthode update(...) qui appelle paint() :
public void update(Graphics g);
Le méthode repaint() qui appelle paint() et update() :
public void repaint();
Pour plus d'information je te conseil de lire la JavaDoc sur JComponent et Component.
@Girakith_ pas besoin de faire super() de toute façon le constructeur de base est toujours appelé implicitement, donc je pense que le problème vient d'ailleurs. Exemple pour voir l'ordre d'appel:
public static void main(String[] args) {
new A();
new B();
new B(5);
}
static class A{
public A(){
System.out.println("passage par A()");
}
}
static class B extends A{
public B(){
System.out.println("passage par B()");
}
public B(int i){
System.out.println("passage par B(int)");
}
}
Il faudrait que tu nous montre le reste du code (ajout de ton panel dans l'UI, appel de repaint/redraw) sinon rien dans la console? Essaye aussi de ne pas appeler setPreferedSize c'est peut être ça qui fait bugger.
Voici le reste du code de ma classe mais je ne suis pas sur que cela va vous aider,il s'agit d'un code genére par l'IDE netbeans (quand je lui ai dit de me créée une nouvelle class qui extends JPanel).
l'idée de mon programme est que j'ai une arrayList de Jpanel ,et je souhaiterait ajouté à la fin de cette arrayList une instanciation de ma classe Arrow (qui extends Jpanel et dont je vous ai donnée le code).
l'ajout s'effectue nikel mais quand je parcours ma liste de JPanel en appelant la méthode redraw() (pour chaque element de ma liste),cela me dessine bien tout les Jpanel de ma classe standard sauf le dernier qui correspond à mon Arrow.et quand j'essaye de debuger je m'apperçois que effectivement la méthode de dessin PaintComponent de Arrow n'est jamais appeler...(alors que la méthode redraw elle est bien executer)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Ctrl+space
Ctrl+space
Ctrl+space