Peinture Graphics2D dans une JFrame
Je suis en train de faire un 2d jeu de tir vertical jeu, dans lequel tout est codé (et de travail), mais les graphismes. Je n'ai pas utilisé les classes Graphiques avant, donc c'est tout nouveau pour moi. Voici le code que j'utilise pour peindre tout à la JFrame:
public void paintAll()
{
Graphics h = new Graphics2D();
for(Bullet j : GameState.getEnBullets()){
h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
for(Enemy j : GameState.getEnemies()){
h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
for(Bullet j : GameState.getPlayBullets()){
h.drawImage(j.getImage(),j.getX(), j.getY(), null);}
this.paint(h);
}
La première ligne "Graphiques h = new Graphics2D();" génère une erreur car Graphics2d est abstrait, mais je n'ai aucune idée de l'endroit où aller à partir d'ici.
J'ai besoin du code pour prendre toutes les images que j'ai et les peindre pour les points dans la JFrame. Je vous rappelle que je n'ai jamais fait ça avant, alors merci de me dire si c'est la mauvaise façon de le faire.
Au lieu de faire de la peinture custom à la
JFrame
lui-même, il est préférable d'ajouter un JComponent
ou JPanel
(si il y a d'autres éléments à inclure). Juste quand vous pensez que la peinture dans un conteneur de niveau supérieur est le meilleur, vous vous rendez compte que vous voulez que le rendu en plein écran JWindow
, ou un JDialog
, ou dans un JInternalFrame
, ou dans le CENTER
d'un BorderLayout
dans un autre JPanel
, ou..
OriginalL'auteur Will | 2011-06-07
Vous devez vous connecter pour publier un commentaire.
dans les connexions avec la Volonté du deuxième filetage (mon hélicoptère de vue) à propos de la même chose Erreur avec minuterie et JFrame
et de corriger l'intuition par Andrew Thompson magies globe terrestre
J'ai ajouté (j'espère que c'est bien, parce que je ne suis pas familair avec de la peinture, paintComponent ou paintComponents ensemble avec des Graphiques personnalisés)
JComponent
et overrridingpaintComponent()
. Il n'y a pas d'INTERFACE utilisateur délégué, à ce niveau, mais il y a est double support de la mémoire. Auparavant jusqu'-voter, BTW.OriginalL'auteur mKorbel
Remplacer
paintComponent()
à la place; elle fournira à l'Graphics
contexte. Vous pouvez cast à unGraphics2D
.Addendum: Ceci suppose que vous remplacez
paintComponent()
dans unJComponent
, qui est ensuite ajouté à laJFrame
.paint()
, voir comment cela example utiliserepaint()
dans un TimeractionPerformed()
méthode.Thompson: en fait, c'est en partie droite. Ce qu'il dit de faire des oeuvres pour le paintComponent(Graphics g), qui est probablement ce qu'il avait voulu dire.
juste upvote, quelques fils sur ce forum sont là avec une énorme quantité d'infos à ce sujet, mais vous avez eu raison dans le post original, avant le 1er. l'amendement, pour JFrame (RootPane) s'agit-il uniquement de la peinture() +1
OriginalL'auteur trashgod