Anfängerfrage JPanel repaint()

I

itsafiasco

Gast
Schön guten Tag,

vorab muss ich sagen, dass ich im Bezug auf Zeichnen mit Java noch recht unerfahren bin. Doch für ein Schulprojekt bin ich grade dabei, mir das alles anzueignen. Dabei bin ich jedoch auf folgendes Problem gestoßen:

Erstmal der Code:

Java:
import javax.swing.*;
import java.awt.*;

public class PacMan extends JPanel{
  
  int cnr = 0;
  
  public PacMan() {
    
    super();
    this.animate();
    
  }  
  
  public void paintComponent(Graphics g) {
    
    super.paintComponent(g);
    g.setColor(Color.yellow);
    
    this.cnr++;
    
    g.fillArc(25+this.cnr,25,25,25,30,300);
    
  }  
  
  public void animate() {
    
    while(true) {
      super.repaint();
    }  
      
  }  
  
}

Wenn ich jetzt alles ausführen will, passiert gar nichts mehr. Kein Fenster öffnet sich, kein (Kompilier-)Fehler, nix. Lass ich das repainten raus, geht aber alles.
Vorher hatte ich es aber auch schonmal geschafft, was in ein Jframe zu zeichnen und zu repainten, also alles in einer Datei. Aber das fand ich nicht so optimal und gut.

Kann sich ein Experte das kurz angucken und mir n Tipp geben? :S

LG
 
G

Gast2

Gast
Mal ins blaue geraten:
Du rufst animate() auf dem EDT auf und blockierst ihn dann mit der Endlosschleife.

Außerdem frage ich mich welchen Zweck diese Methode haben soll? Die ruft nur unendlich oft repaint() auf. Was genau willst du da erreichen?
 
I

itsafiasco

Gast
Na ich möchte, dass letzten Endes sich der PacMan vorerst nur immer weiter nach links bewegt. Dazu erhöhe ich die X-Variable bei jedem Aufruf der Paint-Methode und das neuzeichnen passiert doch durch repaint oder? Zumindest hab ich das mal irgendwo gesehen und geklappt hatte es ja schonmal bei mir so

Und ich hatte den Code hier auch vereinfacht. Bei einer anderen Lösung, war schon ein KeyListener dran verknüpft, mit ich den Pacman starten und stoppen konnte.
 
G

Gast2

Gast
Achso, das habe ich jetzt erst gesehen. Das solltest du so NICHT machen. Du hast (wenig) Einfluss darauf, wann oder wie oft die paintComponent() Methode aufgerufen wird!

Sowas löst man in der Regel mit einer Gameloop. Die wird so gesteuert, dass bspw. 30 Loops pro Sekunde laufen (damit läuft dein Spiel auf allen Rechnern annähernd gleich schnell. Pro Durchlauf wird irgendwas berechnet (bspw. die Position deines PacMans verändert) und danach ein repaint() aufgerufen.
Ein Beispiel dafür findest du zum Beispiel im Tutorial von Quaxli: http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html

Aktuell funktionierts bei dir nicht weil deine Schleife vermutlich im EDT läuft.
 
I

itsafiasco

Gast
Reicht es nicht, wenn ich noch ne Bedingung in die while-Schleife baue, worüber ich dann regel, dass Pacman mit nem Tastendruck gestartet wird und bei Kollision aufhört? Auf mehr muss ich doch gar nicht Einfluss haben?

Trotzdem danke für den Link, ich schau mir das zu Hause mal in Ruhe an. Aber passt das jetzt auch zu meinem Code oder basiert das auf was anderem? Ich würde mcih nämlich nicht so gerne noch in was anderes einarbeiten wollen.

Wenn ich das mit dem EDT richtig verstehe, müsste ich also n neuen Thread erstellen für das Neuzeichnen, damits funktioniert? Wenn ja, wäre das auch ne Möglichkeit?
 
G

Gast2

Gast
Du wirst deinen Code schon anpassen müssen. So wie du es jetzt geschrieben hast ists einfach murks.
Das Tutorial von Quaxli ist schonmal ne gute Anlaufstelle, da siehst du wie man sich so eine Gameloop zusammenbaut und auch auf Benutzereingaben reagiert.
 
I

itsafiasco

Gast
Ok gut, dann werd ich das mal durchgehen. Ein gewisses Niveau beim programmierten Code sollte man schon erreichen, da hast du recht ;) Vielen Dank
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Anfängerfrage zu meinem Programm. Java Basics - Anfänger-Themen 15
V Anfängerfrage: HelloWorld läuft nicht Java Basics - Anfänger-Themen 3
F if else if anfängerfrage Java Basics - Anfänger-Themen 22
P Anfängerfrage, Primitiv,komplex Java Basics - Anfänger-Themen 1
pkm Erste Schritte Anfängerfrage zu ::new Java Basics - Anfänger-Themen 4
A Anfängerfrage Java Basics - Anfänger-Themen 7
M Erstellung Interfaces....totale Anfängerfrage Java Basics - Anfänger-Themen 16
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
R Anfängerfrage zu Methoden in Vererbte Klassen Java Basics - Anfänger-Themen 2
F Erste Schritte (Gelöst) Anfängerfrage Arraylist ausserhalb der Main Methode Java Basics - Anfänger-Themen 2
DeVolt Anfängerfrage zu util.scanner Java Basics - Anfänger-Themen 2
T Anfängerfrage zu Schleifen und Arrays Java Basics - Anfänger-Themen 5
B Collections ArrayList füllen - Anfängerfrage Java Basics - Anfänger-Themen 1
Shams Anfängerfrage zu jnlp Java Basics - Anfänger-Themen 0
T Kleine Anfängerfrage :) Java Basics - Anfänger-Themen 4
F Anfängerfrage zu extends Java Basics - Anfänger-Themen 12
A Anfängerfrage: Zahlformat prüfen Java Basics - Anfänger-Themen 4
I Anfängerfrage: Fehlersuche Java Basics - Anfänger-Themen 2
A Methoden Anfängerfrage: 2 Listen Vergleichen Java Basics - Anfänger-Themen 7
L Anfängerfrage zu TileMap Java Basics - Anfänger-Themen 4
J anfängerfrage Java Basics - Anfänger-Themen 10
J Anfängerfrage HelloWorld? cmd-Problem Java Basics - Anfänger-Themen 35
J Anfängerfrage zu Grundlagen von Packages Java Basics - Anfänger-Themen 7
J Anfängerfrage zur Variablen Java Basics - Anfänger-Themen 11
J Anfängerfrage :-) Java Basics - Anfänger-Themen 5
M Banale Anfängerfrage Java Basics - Anfänger-Themen 3
Y Anfängerfrage zu array(-Syntax) Java Basics - Anfänger-Themen 6
J Leichte Java Anfängerfrage. Bitte schnelle Antwort. :) Java Basics - Anfänger-Themen 10
U Anfängerfrage - Multithreading Java Basics - Anfänger-Themen 8
T Aufrufen von get-Methode aus anderer Klasse (absolute Anfängerfrage) Java Basics - Anfänger-Themen 2
G Anfängerfrage zu "@Override" Java Basics - Anfänger-Themen 5
N Anfängerfrage richtige Syntax und Frage zu Vector Java Basics - Anfänger-Themen 7
A Anfängerfrage - array required, but java.lang.String found Java Basics - Anfänger-Themen 7
M Kleine Anfängerfrage Java Basics - Anfänger-Themen 10
S Anfängerfrage zu Array Java Basics - Anfänger-Themen 8
K Anfängerfrage: Fehlermeldung Java Basics - Anfänger-Themen 6
D Anfängerfrage N. Office Access NOA: setHidden und dann . Java Basics - Anfänger-Themen 2
N Anfängerfrage Java Basics - Anfänger-Themen 14
N anfängerfrage. returnwerte Java Basics - Anfänger-Themen 3
Gama Importieren von Klassen [Anfängerfrage] Java Basics - Anfänger-Themen 3
G Anfängerfrage Java Basics - Anfänger-Themen 11
B Anfängerfrage zu Swing "Reload" Java Basics - Anfänger-Themen 2
N Anfängerfrage bezüglich Speicherverwaltung Java Basics - Anfänger-Themen 3
G Anfängerfrage zu Threads Java Basics - Anfänger-Themen 14
Q Anfängerfrage Java Basics - Anfänger-Themen 6
J Anfängerfrage: wie externe Dateien importieren? Java Basics - Anfänger-Themen 5
S Anfängerfrage Java Basics - Anfänger-Themen 7
G Anfängerfrage zu Vererbung Java Basics - Anfänger-Themen 6
B Anfängerfrage zu 'NoClassDefFoundError' Java Basics - Anfänger-Themen 2
J IO Frage Hex-Output - Anfängerfrage Java Basics - Anfänger-Themen 5
T Anfängerfrage -> Projekt Java Basics - Anfänger-Themen 2
C Anfängerfrage ->Objekte und Arrays Java Basics - Anfänger-Themen 4
V Anfängerfrage Java Basics - Anfänger-Themen 8
E RMI Anfängerfrage Java Basics - Anfänger-Themen 10
DEvent anfängerfrage: wieso layout erst beim verändern? Java Basics - Anfänger-Themen 6
G Anfängerfrage Java Basics - Anfänger-Themen 2
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben