Wiki tutorial malen in swing 2

Hallo,
ich hätte ein paar Fragen zu dem Wiki Tutorial malen in swing 2.

  1. Annotation @Override: Wenn ich das richtig verstanden habe, dann wird damit eine Methode der Oberklasse überschrieben. Aber wo steht der neue Code dann letztendlich? In der Oberklasse oder in der abgeleiteten Klasse?
  2. super(): im Konstruktor von DrawingPanel() wird super() aufgerufen. Damit wird der Konstruktor der Oberklasse aufgerufen. Warum macht man das?
  3. super.paintComponent(): in der Methode paintComponent() wird super.paintComponent() aufgerufen. Warum? Reicht es nicht in paintComponent() die Funktionalität du definieren und dann mittels repaint() das JComponent() neu zu zeichnen? Warum muss ich super.paintComponent() aufrufen?

Danke im Voraus.

Hi,

  1. Nein das stimmt nicht, das dient nur zur “Markierung” von überschriebenen Methoden. Der Code steht immer in der neuen Klasse, im Regelfall kannst du die Oberklasse ja nicht bearbeiten
  2. Es muss immer ein Superkonstruktor aufgerufen werden, standardmäßig wird immer super() aufgerufen auch wenn du nichts hinschreibst. Manchmal will man aber einen anderen aufrufen, einige machen es auch damit sie sehen das da was von der Oberklasse aufgerufen wird
  3. mit super.paintComponent() rufst du die original Klasse auf damit sie die normalen “Malereien” erledigt und du nur das malen musst was du willst.

Wenn wir die Super-Implementation nicht aufrufen, also kein super.paintComponent(g), müssen wir die “opaque” Eigenschaft der Komponente berücksichtigen, das heisst, wenn diese Komponente deckend ist (d.h. isOpaque() gibt “true” zurück), müssen wir den Hintergrund vollständig in einer deckenden, nicht halbdruchsichtigen, Farbe ausfüllen. Wenn wir das unterlassen, werden wir wahrscheinlich visuelle Verunreinigungen sehen. Es ist also einfacher, immer super.paintComponent(g) aufzurufen, dann kümmert sich Swing um den Hintergrund, so daß wir keine visuelle Verunreinigungen sehen werden.

Hi LukeS,

ich glaube die Beschreibung in diesem Link: Java @Override Annotation ist eine gute Antwort auf deine erste Frage!

was ist bitte swing 2?

Nicht
malen in (swing 2)
sondern
(malen in swing) 2
:slight_smile:

EDIT Genaugenommen geht’s um http://wiki.byte-welt.net/wiki/Malen_in_Swing_Teil_2:_ein_einfaches_Malprogramm

achso ^^
ich dacht schon es gibt ne neuauflage von swing oder so :smiley:

Gibt’s. Heißt aber nicht „Swing 2“ sondern „Java FX“ :smiley: