2010-12-13 6 views
1

J'ai un problème avec mon applet: il ne se rafraîchit pas quand j'en ai besoin.Swing: setContentPane ne rafraîchit pas l'interface lorsqu'il est appelé

J'essaie de passer d'un écran d'interface à l'autre lorsque je clique sur le bouton.

J'ai un

public class PixelRainEditorApp extends JApplet 

et init

SwingUtilities.invokeAndWait(new Runnable() { 
    public void run() { 
     createGUI(); 
    } 
}); 
private void createGUI() { 
    a = new A(this); 
    this.setSize(800, 480); 
} 

Puis j'ai 2 classes A et B qui se prolongent JPanel

public A(JApplet parent) { 
    super(parent); 
    setOpaque(true); 
    setBackground(Color.BLACK); 
    this.parent.setContentPane(this); 
} 

lorsque je clique sur un bouton voir A

@Override 
public void actionPerformed(ActionEvent e) { 
    if(TAG.equalsIgnoreCase(e.getActionCommand())){ 
     new B(this.baseParent); 
    } 
} 

et B est le même que A mais avec des images différentes

public B(JApplet parent) { 
     super(parent); 
     setOpaque(true); 
     setBackground(Color.BLACK); 
     this.parent.setContentPane(this); 
    } 

Maintenant, cela fonctionne très bien quand je veux afficher A, mais quand je veux lancer B lorsque je clique sur un bouton A, rien arrive. C'est seulement quand je redimensionne la fenêtre que B apparaît ... J'ai essayé d'invalider ou repeindre et de repeindre et de divers endroits dans mes applications mais rien ne se passe

Des idées?

Jason

+0

Comment ajouter une instance de la classe B? –

+0

Edité ma question, je suis sûr que c'est quelque chose de si stupide: S –

+0

Je ne pense pas que ce soit stupide, j'ai eu des problèmes similaires dans le passé et je suis sûr que mon code était correct. Essayez la méthode revalidate() (si elle est disponible), essayez différents look & feel (je ne suis pas sûr - je ne me souviens pas mais j'ai probablement "résolu" mes problèmes de cette façon). –

Répondre

4

Il suffit d'ajouter this.parent.revalidate(); this.parent.repaint(); à la fin de vos appels.

+0

Oui, il a finalement commencé à fonctionner quand j'ai mis le sélecteur de vue en place et a été en mesure de centraliser les changements (j'ai eu un cauchemar de threads/invok plus tard/swingworker provoquant des problèmes de rafraîchissement). –

Questions connexes