Malerei Graphics2D in einem JFrame
Mache ich ein 2d-vertikal-shooter-Spiel, in dem alles, was codiert ist (und funktioniert), aber die Grafik. Ich habe nicht verwendet die Grafik-Klassen vor, so ist dies alles neu für mich. Der folgende Code ist der code, den ich verwenden, um zu malen alles auf den 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);
}
Die erste Zeile "Graphics h = new Graphics2D();" erzeugt eine Fehlermeldung, da Graphics2d ist Abstrakt, aber ich habe keine Ahnung, wohin Sie gehen von hier aus.
Ich brauche den code, um all die Bilder, die ich habe, und malen Sie die Punkte in den JFrame. Ich Sie daran erinnern, dass ich dies noch nie getan haben, so bitte sagen Sie mir, wenn dies ist der falsche Weg, dies zu tun.
JFrame
selbst, ist es besser, fügen Sie ein JComponent
oder JPanel
(wenn dort sind andere Komponenten auch). Gerade wenn Sie denken, dass die Malerei in einer top-level-container ist am besten, Sie merken, Sie wollen, dass die Darstellung in full-screen JWindow
oder eine JDialog
oder in einem JInternalFrame
oder in der CENTER
einer BorderLayout
in einem anderen JPanel
oder..InformationsquelleAutor Will | 2011-06-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
in verbindungen mit Wird der zweite thread (meine Helikopter-Ansicht) über die gleiche Sache Fehler mit timer und JFrame
und richtige intuition von Andrew Thompson Magie Welt dann
Ich Hinzugefügt (ich hoffe, das ist richtig, denn ich bin nicht familair mit Farbe, paintComponent oder paintComponents zusammen mit benutzerdefinierten Grafiken)
JComponent
und overrridingpaintComponent()
. Es gibt keinen UI-delegate auf dieser Ebene, aber es wird Doppel-Puffer-Unterstützung. Bisher Stimmen, BTW.InformationsquelleAutor mKorbel
Überschreiben
paintComponent()
wird; stattdessen liefern dieGraphics
Kontext. Sie können cast es zu einerGraphics2D
.Nachtrag: Dies setzt Voraus, dass zwingende
paintComponent()
in einemJComponent
, die dann Hinzugefügt, um dieJFrame
.paint()
, sehen, wie das example > verwendetrepaint()
in einem Timer -actionPerformed()
Methode.Thompson: eigentlich ist er teilweise Recht. Was er sagt, zu tun, für die paintComponent(Graphics g), das ist wahrscheinlich, was er zu sagen beabsichtigte.
nur upvote, ein paar threads in diesem forum gibt es mit der riesigen Menge an infos darüber, aber Sie hatten Recht im ursprünglichen post, die vor dem 1.. änderung, die für JFrame (RootPane) gibt es nur eine paint() +1
InformationsquelleAutor trashgod