Slyh: Swing Formularelemente - Anzeigefehler?

Beitrag lesen

Hallo,

  1. Mit "statischen Grafiken" meine ich Bilder, die das "Design" ausmachen, also sich nicht bewegen, nicht erscheinen, nicht verschwinden, sondern einfach immer da sind.

Ja, das würde ich unter statisch verstehen.
Nur: Wo sind die Bilder? Zeichnest du die direkt in das JFrame rein?
Wieso so kompliziert? Wieso verwendest du nicht einfach z.B. ein Label,
das dieses Bild anzeigen soll. Dann hast du auch das Problem nicht
mehr. (Naja, gut, manchmal ist das nicht möglich.)

  1. Wenn ich ein AniGif zeichnen lasse, dann ruft es sich selbst immer wieder selbst auf, um die Animationsteile anzuzeigen, habe ich festgestellt. Da das sich aber durch ein Flackern aller anderen Grafiken bemerkbar machte, habe ich die Anigifs in update(), alle anderen Grafiken in Methoden, die von paint() gerufen werden. Wenn ich minimiere etc. wird paint aufgerufen, oder durch einen direkten aufruf. Der Befehl repaint(); startet lediglich das update().

Das flackert deshalb, weil in update() normalerweise vorher die
Zeichenfläche gelöscht wird. Wenn du update() überschreibst, also
durch deinen eigenen Code ersetzt, passiert das natürlich nicht mehr.
(Außer du würdest die Zeichenfläche wieder jedesmal löschen.)
In der Regel reicht es übrigens, wenn du in update() einfach paint()
aufrufst, also

void update(Graphics g) {
    paint(g);
  }

oder so ähnlich.

  1. Würde es dir etwas ausmachen, mir das mit dem super.paint() an einem kleinen Codebeispiel zu zeigen? Ich komme da nicht so ganz mit.

Klar.

void paint(Graphics g) {
    // hier ist dein Grafik-Zeugs
    // ...

super.paint(g);
  }

Aber, nach meiner Erfahrung wirst du von deinen gerade gezeichneten
Grafiken anschließend nichts mehr sehen, weil super.paint() (oder
war's paintComponents(), das in super.paint() aufgerufen wird?) wohl
doch wieder die Zeichenfläche löscht. Ich könnte mich aber täuschen.

Ähm, ich will dich ja nicht entmutigen, aber vielleicht solltest du
von deinen bisherigen Experimenten mal ein wenig Abstand gewinnen und
dich erst einmal mit den Grundlagen der Java-Programmierung auseinander-
setzen. Das http://www.javabuch.de von Guido Krüger finde ich
ganz brauchbar. Dort steht auch was über die Grafikprogrammierung drin.
Erst wenn du soweit in Java fit bist, solltest du dich mit der Grafik-
programmierung beschäftigen - und auch wie diese ganzen Sachen bei
Swing so zusammenhängen. Es ist nicht trivial!
Am besten besorgst du dir noch eine anständigen Java-IDE, in der du
dir die Klassenhierarchie angucken kannst und direkt im API-Code
"rumsurfen" kannst. Eclipse (http://www.eclipse.org) ist da
zu empfehlen, auch wenn das evtl. für Einsteiger nicht so gut
verständlich ist. Am besten die Hilfe lesen.
Und lies doch gelegentlich mal die API-Doku, die du bei Sun runterladen
kannst. Da steht schon recht viel drin.

Gruß
Slyh