Re: warum keine Schleifen und Logik in paintComponent()?



Ich vermute folgendes:
a) Wenn ich das sleep(300) auskommentiere und das Fenster vergrößere,
wird mir nur noch 1 Kreis dargestellt. Es wird also nicht mehr der
ganze offscreen Bereich auf den Bildschirm kopiert.
(also kein Double-Buffering)
b) Wenn ich dagegen das sleep(300) nicht auskommentiere und das
Fenster vergrößere, werden wieder alle Kreise dargestellt. Es wird
also der ganze offscreen Bereich auf den Bildschirm kopiert.
(also Double-Buffering)
Das heißt man, kann sich nicht verlassen, dass Swing immer
Double-Buffering verwendet, oder?

Da würde ich eher sagen, wenn man den ereignisverarbeitenden Thread
einfriert und dann die Fenstergröße ändert, ist das Ergebnis
undefiniert und hängt im Detail vielliecht auch noch von der Plattform
ab.

1)
Wenn ich das sleep(300) weglasse, und erst dann das Fenster
vergrößere, wird mir nur noch 1 Kreis dargestellt. Es gefriert nichts
ein.
Es wird also nicht mehr der ganze offscreen Bereich auf den Bildschirm
kopiert. Also kein Double-Buffering. Das widerspricht deiner Aussage.

2)
Swing kann Double-Buffering verwenden. Dabei wird
Geflacker und sichtbares Neuzeichnen dadurch vermieden,
dass paint() erst mal alles in einen Puffer zeichnet und dieser
erst nach Abschluss der Methode in einem Rutsch angezeigt wird.
Daher erscheint es so, als ob erst gewartet
und dann gezeichnet wird.

Ich habe in der Funktion main diese Schleife (siehe unten) eingebaut
und damit diese "rechenintensive" (statt k < 10 könnte ich auch k <
10000000 schreiben, dann wäre es rechenintensiv) Operation damit
außerhalb des EDT gelegt.
Kann dann dein obiges Argument "nach Abschluss der Methode in einem
Rutsch angezeigt..." mir auch innerhalb von main im Programmausschnitt
unten passieren, d.h 10*100ms warten und dann alles ausgeben (tut es
aber nicht, ich habe es ausprobiert).
Dann hätte ich mit Swing ja immer das Problem, dass meine
Verzögerungen, egal wo ich mich befinde - aufsummiert werden und dann
sich erst mit einem Schlag bemerkbar machen.
Oder wo _muss_ ich meine rechenintensiven Operationn platzieren
(brauche ich dazu unbedingt einen eigenen Thread)?


----------------------------------------
int main(){
while(k<10){
System.out.println("i in main="+i);
diagramm.setI(i);
diagramm.repaint();
i=i+20;
k=k+1;
try{
Thread.sleep(100);
}
catch(Exception e){}
}
....
}
----------------------------------------

3)
Was gehört alles zum EDT ?
Ereignisverarbeeitung, paintComponent(), und was noch?


mfg
Ernst



.



Relevant Pages

  • Re: Is electromagnetic field theory unified?
    ... So you talk about potential energy? ... Speed must change in order for kinetic energy to change. ... Hint: torque is not energy. ... > Observe the magnetic field placing any iron piece nearby. ...
    (sci.physics)
  • Re: Damn you, FEDEX! or Nikon D40 lost in Springfield, MO blackhole.
    ... the 2 mp Mavica he had been using with a Nikon D40. ... After shopping around, he got me to order one for him. ... The shipper had it insured, but from what I have read it could take weeks to sort this crap out. ... You may get your insurance from FedEx and a couple weeks later they find it and deliver it. ...
    (alt.photography)
  • Re: python 3 constant
    ... is require Python to change to accommodate your need. ... Can you see the slight difference? ... Best regards, ...
    (comp.lang.python)
  • Re: The Sci-Fi Rejection Letter That Time Forgot
    ... nations have stockpiled arsenals of these incredible bombs and the time the story is set. ...
    (rec.arts.sf.written)
  • Re: Wachstumssaison Flieder
    ... Handbreit über dem Boden. ... "Fliederkrimi" am Samstag halten heute meine Nerven nicht aus. ... Dorothee ...
    (de.rec.garten)