Problem beim Neuzeichnen nach deiconify

Status
Nicht offen für weitere Antworten.

Miladriel

Mitglied
Hallo zusammen,
Ich arbeite immer noch fleißig an meinem Projekt und bin nun leider auf ein neues Problem gestoßen, bei dem ich euch um Hilfe bitten möchte.

Ich habe in meinem Frame ein canvas , auf diesem canvas zeichne ich mit einer eigenen paint() Methode verschiedene rechtecke- was wunderbar funktioniert- ,wenn ich jedoch das Fenster minimiere und dann "entminimiere", sind sie weg.
Nun habe ich schon WindowListener eingefügt der bei 'windowDeiconified' das was dort vorher gezeichnet war quasi nochmal zeichnet, das tut das Programm auch, jedoch erscheint das gezeichnetet nur den Bruchteil einer Sekunde und wird dann scheinbar wieder "gelöscht"

Lösungsansatz: Das Programm führt vielleicht die Originale Canvas paint() aus nach dem es den Quellcode aus dem WindowListener ausführt. Wenn das der Fall ist, Wie kann ich das umgehen bzw unterbinden??

Wenn das komplett falsch ist bin ich gerne für andere Lösungansätze offen :)

Mit freundlichen Grüßen
Miladriel

P.S.: Die paint Methode habe ich in einer neuen Canvas-Klasse überschrieben von der ich auch das Objekt in meinem Frame erstelle.
 

Niki

Top Contributor
Ist schon lange her dass ich sowas gemacht habe. Probiers aber mal mit einem JPanel (Swing und AWT mischt man nicht) und überschreib die Methode paintComponent
 

Miladriel

Mitglied
Danke für die Antworten, ich fürchte jedoch das dort nicht das Problem liegt oder ich nicht verstehen wie ihr das meint ^^

Ich habe als Lösungsversuch die Canvas Klasse ersetzt mit einer JPanel Klasse die das gleiche kann - was eigentlich eine verschlecheterung war da das programm jetzt hakt nach dem entminimieren und ansonnsten noch das gleiche Problem hat.
Dann habe ich die paint() methode in eine paintComponent umgeschrieben und das problem bleibt bestehen.
Gerade jedoch fällt mir ein das das was ich mache eigentlich das Überladen der methode Paint() bzw paintComponent() ist - da ich der Methode nicht nur das Graphics Objekt sondern auch noch ein Objekt mit den Daten der zu zeichnenden Rechtecke übergebe - ich habe dazu mal versucht einfach mit einer leeren Methode(die ansonsten der paintComponent() entsprechen sollte) zu Überschreiben, aber auch das scheint nicht zur Lösung zu führen.

Evt. ist ja auch etwas ganz anderes das Problem...
 

FatFire

Bekanntes Mitglied
Du musst natürlich schon die Methode paintComponent (Edit: Also die in der ein Graphics-Objekt übergeben wird) überschreiben und nicht überladen. paintComponent wird auch nicht manuell aufgerufen, sondern nur indirekt über das Aufrufen von repaint.

Gruß FatFire
 

Miladriel

Mitglied
ich habe dazu mal versucht einfach mit einer leeren Methode(die ansonsten der paintComponent() entsprechen sollte) zu Überschreiben, aber auch das scheint nicht zur Lösung zu führen.

Wie ich schon geschrieben habe ich genau das Versucht nachdem ich meinen fehler bemerkte jedoch ohne erfolg.

mein Versuch sah so aus:
[Java] public void paintComponents(Graphics g){

}[/Java]

Ist daran etwas falsch?
 

FatFire

Bekanntes Mitglied
Hm, wenn Du zig mal in Deiner Erklärung paintComponent schreibst und dann in Deinem Codebeispiel paintComponents steht, dann ja. Wenn man so kleinen Fehlern hinterherlaufen muss, ist das schon nicht schön.
Java:
  @Override 
  protected void paintComponent( Graphics g ) 
  { 
    super.paintComponent( g ); 
    //Und hier kannst Du dann zeichnen wie ein Weltmeister!
  }
So muss das aussehen.
 

Miladriel

Mitglied
Ja tut mir leid- habe mich im beispielcode vertippt - aber im programm code stand es richtig.
Ich will jedoch überhauptnicht in der überschreibenen Methode zeichnen sondern in der überladenen , da ich ein objekt übergeben muss das die Daten der zu zeichnenden Objekte beinhaltet.

Ich würde halt gerne ausschalten das der die paintComponent() an der stelle benutzt da dies passiert nach dem das Programm meinen Code, also mein zeichnen, ausgeführt hat und somit das Panel leer zeichnet und meine Zeichnung gelöscht wird.

Mir ist klar das der Ansatz etwas naiv klingt, aber ich lern das ganze ja auch noch und weiß halt nicht so genau was geht und was nicht....
 

FatFire

Bekanntes Mitglied
Es wird aber nicht nur paintComponent ausgeführt, das eigentliche Löschen des Bildes und dergleichen passiert ganz woanders. Ausserdem musst Du Dich schon mit Deiner Zeichnerei in die vorgegebene Kette einreihen, denn wenn Dein Bild verdeckt wird, oder wie im Beispiel iconfiziert und dann wieder aufgemacht wird, muss das Betriebssystem ja veranlassen, dass der Krempel neu gezeichnet wird. Und das hast Du halt nur im vorgegebenen Ablauf sichergestellt. Die Daten müssen also irgendwie von innerhalb Deiner paintComponent-Methode beschafft werden. Das ist aber nicht so schwer. Beste Lösung: Du lässt den Kram, was überhaupt gezeichnet werden soll, irgendwo berechnen und dann übergibst Du das Deinem Panel, welches es als Referenz abspeichert. Wird paintComponent dann vom Betriebssystem aufgerufen (oder indirekt von Dir, in dem Du es durch repaint() anstößt), zeichnet er die Daten, die er sowieso irgendwo in sich liegen hat. Das ist nötig, weil man auch als Programmierer letztendlich nicht komplett Herr über das Geschehen ist, denn Du weißt nicht, wann es nötig ist, neu zu zeichnen.

Gruß FatFire
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
S Collections funktionale Listen (ListNode<E>) review und problem beim clone Java Basics - Anfänger-Themen 0
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
F Problem beim entfernen von mehreren Listenelementen auf einmal (Programmierung des Spiels Arschloch) Java Basics - Anfänger-Themen 1
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
A Problem beim Deklarieren von einem BOOLEAN Java Basics - Anfänger-Themen 4
B Gleicher Prozess starten und stoppen (Problem beim Stoppen) Java Basics - Anfänger-Themen 5
DestinatioN Problem beim splitten eines Satzes in Wörter und die Wörter in Buchstaben Java Basics - Anfänger-Themen 2
B Problem beim Angeben einer Eingabe Java Basics - Anfänger-Themen 12
J Encoding Problem beim Einlesen einer txt Datei mit Umlauten Java Basics - Anfänger-Themen 3
R Problem beim Wochenplan (Datum,Wochentag) Java Basics - Anfänger-Themen 30
D Problem beim umwandeln eines Strings in eine Dzezimalzahl Java Basics - Anfänger-Themen 6
A Compiler-Fehler Problem beim einbinden der applet Klasse Java Basics - Anfänger-Themen 2
L Compiler-Fehler Problem beim Programmieren eines Kalenders (java.lang.ArrayIndexOutOfBoundsException) Java Basics - Anfänger-Themen 2
C Problem beim laden eines BufferedImage Java Basics - Anfänger-Themen 2
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
fLooojava Bluetooth Projekt - Problem beim mehrmaligen Senden Java Basics - Anfänger-Themen 5
E Problem beim Übergeben von Parameter an Methode Java Basics - Anfänger-Themen 2
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
R Problem beim erstellen eines neuen Klassenobjekts Java Basics - Anfänger-Themen 2
F Input/Output Problem beim einlesen eines Strings Java Basics - Anfänger-Themen 3
J Problem beim auslesen von Int Wert aus YML-Datei Java Basics - Anfänger-Themen 6
P Problem beim Abschluss im Kompositum Java Basics - Anfänger-Themen 3
M Problem mit null pinterexception beim laden von Bildern Java Basics - Anfänger-Themen 20
K Problem beim Array aufruf Java Basics - Anfänger-Themen 4
J Problem beim ausführen in cmd.exe Java Basics - Anfänger-Themen 4
J Variablen Problem beim einlesen einer Zahl Java Basics - Anfänger-Themen 7
A Problem beim Compilieren Java Basics - Anfänger-Themen 11
J Problem beim Fenster Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
M Problem beim Compilieren Java Basics - Anfänger-Themen 14
Maxim6394 Problem beim Abspielen von Sounds Java Basics - Anfänger-Themen 8
S Problem beim ersten compilieren überhaubt Java Basics - Anfänger-Themen 43
H Problem beim lesen des InputStreams von einem Subprozess Java Basics - Anfänger-Themen 4
Luk10 Problem beim .jar Datei erstellen Java Basics - Anfänger-Themen 19
L Problem beim Ausführen Java Basics - Anfänger-Themen 40
A Problem beim einfügen in eine Datenbank Java Basics - Anfänger-Themen 2
E Problem beim Programmieren eines Kartenspiels Java Basics - Anfänger-Themen 3
A Problem beim Ausführen einer .jar datei auf externen System Java Basics - Anfänger-Themen 5
M Problem beim compilieren Java Basics - Anfänger-Themen 6
JAVAnnik problem beim lvl laden Java Basics - Anfänger-Themen 15
L Problem beim Einlesen einer Datei in einen String Java Basics - Anfänger-Themen 12
W Problem beim erstellen eines Tests Java Basics - Anfänger-Themen 16
JAVAnnik Problem beim Objekt bewegen Java Basics - Anfänger-Themen 20
A Erstes Programm - Problem beim Ausführen als jar Java Basics - Anfänger-Themen 3
S Problem beim Speichern und Laden von Daten Java Basics - Anfänger-Themen 13
B Problem beim Abspielen einer Videodatei Java Basics - Anfänger-Themen 4
S Problem beim Erstellen eines Scanner-Objekts Java Basics - Anfänger-Themen 7
W Problem beim CSV-Import Java Basics - Anfänger-Themen 5
M Datentypen Problem beim zusammenstellen eines Abfrage-Strings Java Basics - Anfänger-Themen 3
K Collections Problem beim import von Packages Java Basics - Anfänger-Themen 10
S Problem beim Kompilieren - cannot find symbol - constructor() Java Basics - Anfänger-Themen 12
B Problem beim Email versenden mit Javamail Java Basics - Anfänger-Themen 5
H Problem beim Anfang von Java (Java Editor) Java Basics - Anfänger-Themen 2
I Problem beim Schreiben eines ersten Programms Java Basics - Anfänger-Themen 3
D Problem beim Zeichnen von "Das Haus vom Nikolaus" Java Basics - Anfänger-Themen 10
D Problem beim Auslesen aus File Java Basics - Anfänger-Themen 3
A Problem beim Splitten eines Strings Java Basics - Anfänger-Themen 10
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
J Problem beim Löschen von elementen aus einer ArrayList Java Basics - Anfänger-Themen 5
V Problem beim Programm laden Java Basics - Anfänger-Themen 5
H Problem beim kompilieren Java Basics - Anfänger-Themen 3
C ActionListener problem beim starten von programmen Java Basics - Anfänger-Themen 3
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Problem beim Returnwert einer Methode Java Basics - Anfänger-Themen 12
M line.separator: Problem beim Lesen einer Datei Java Basics - Anfänger-Themen 11
R Problem beim Ausführen von Java-PGM aus der shel Java Basics - Anfänger-Themen 3
G Problem beim Sortieren einer Liste Java Basics - Anfänger-Themen 20
M Problem beim Ereignishandling mit Menü Java Basics - Anfänger-Themen 2
H problem beim zeichen im JFrame Java Basics - Anfänger-Themen 6
F Problem beim Objekteaufruf... Java Basics - Anfänger-Themen 4
E BlockChallenge: Problem beim löschen der Blöcke Java Basics - Anfänger-Themen 3
H Problem beim Verkürzen von Programm Java Basics - Anfänger-Themen 3
T Problem beim Werfen und Fangen von Exceptions Java Basics - Anfänger-Themen 2
M Problem beim Zugriff auf Daten GUI + Startklasse Java Basics - Anfänger-Themen 4
P Problem beim Thread Java Basics - Anfänger-Themen 20
0 problem beim Polygon zeichnen Java Basics - Anfänger-Themen 3
V Problem beim erstellen eines ausführbaren Programs Java Basics - Anfänger-Themen 5
0 Problem beim Starten des Applets Java Basics - Anfänger-Themen 2
N Problem beim Durchsuchen einer LinkedList Java Basics - Anfänger-Themen 5
G Problem beim Programmieren von Blackjack Java Basics - Anfänger-Themen 15
R Problem beim Laden eines Images Java Basics - Anfänger-Themen 7
K Problem beim installieren des JDK 1.6+ version Java Basics - Anfänger-Themen 3
T Problem beim Konsolenstart Java Basics - Anfänger-Themen 5
C Problem beim Berechnen der Quadratwurzel Java Basics - Anfänger-Themen 3
C Problem beim nutzen von Teilprogrammen in main Java Basics - Anfänger-Themen 2
M Problem beim Zeichnen Java Basics - Anfänger-Themen 5
D Problem beim Kompilieren Java Basics - Anfänger-Themen 4
D Problem beim auslesen von TextArea Java Basics - Anfänger-Themen 3
G Problem beim Schreiben in Textdatei Java Basics - Anfänger-Themen 9
F ggT finden - problem beim qc Java Basics - Anfänger-Themen 4
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Habe ein Problem mit syn-Editor ( beim compilieren) Java Basics - Anfänger-Themen 4
S Problem beim Verstehen des Quellcodes Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben