Question

Je tente d'utiliser le double buffering avec une toile, quelque chose que je ne l'ai jamais fait auparavant. Je profitais des tutoriels en ligne, et mis en place le code suivant pour instancier une toile et mettre en place la mise en mémoire tampon pour elle. J'ai codé le processus complet, y compris les graphiocs de rendu (non représentés ici), et le compilateur accepte.

 volCanvas = new VolCanvas();
 volCanvas.setBackground(Color.black);
 volCanvas.setBounds(10, 380, 1180, 125);
 add(volCanvas);
 volCanvas.createBufferStrategy(2);            (Program blows up here)
 offScreen = volCanvas.getBufferStrategy();
 ofsg = (Graphics2D) offScreen.getDrawGraphics();

Mais le programme explose à la ligne Signalé dans le code ci-dessous. Le moteur d'exécution renvoie une exception d'État illégale, l'explication « composant doit avoir un pair valide ».

Pour autant que je peux dire, le code source est essentiellement comme je l'ai vu dans plusieurs exemples, donc je n'ai pas la moindre idée de ce qui se passe ici. Toute aide serait grandement appréciée.

Merci,

John Doner

Était-ce utile?

La solution

  

Component doit avoir un pair valide ».

Cela signifie essentiellement votre interface graphique n'est pas visible ou si vous avez pas encore ajouté votre composant à une interface graphique visible.

Vos questions sur l'accord de forum avec les applications Swing. Vous ne devriez pas utiliser un composant AWT (Canvas) dans une application Swing. Faire de la peinture personnalisée sur un JComponent ou JPanel. Swing est à double tampon par défaut.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top