Zeichnen in Swing

Wang

Bekanntes Mitglied
Hallo,

ich muss ein Kurzreferat über "Zeichnen in Swing" halten und lese mich deshalb in die Obeflächenprogrammierung ein. Das Referat darf maximal vier Minuten dauern und da das Kapitel so umfangreich ist, ist man schnell über dem Zeitlimit.
Als Anfänger weiß ich leider nicht, was für das Thema "Zeichnen in Swing" wirklich relevant ist und was nicht.

Wenn ich auf die Architektur MVC eingehe, dürften die vier Minuten bereits ausgeschöpft sein, andererseits halte ich es doch für wichtig, um die Zusammenhänge zwischen Publisher-Subscriber, der Ereignishierarchie, -beobachtung, -behandlung und -quellen zu verstehen.

Es wäre super, wenn jemand seine Meinung darüber schreiben würde, welche Schlagworte vielleicht doch am sinnvollsten sind oder sogar eine grobe Gliederung nennen.

Vielen Dank.

Gruß
Wang
 
Zuletzt bearbeitet:

XHelp

Top Contributor
Wenn du anfängst über MVC zu reden wird höhstwahrscheinlich der Spruch kommen "Thema verfehlt, 6, setzen".
Die 4 Minuten erscheinen mir etwas suspekt, aber ok, wenn es sein muss.
Du solltest eher auf das Zeichnen konzentrierer. Z.b. kannst du sagen, wodurch so ein JButton auf dem Bildschirm erscheint. Sagen, dass du z.B. JPanel schnappen kannst du alles mögliche darauf malen kannst. (Natürlich auch das "wie" beantworten"). Dann kannst du auch noch AWT anschneiden und sagen, dass z.B. Canvas existieren (so als Gegenbeispiel). Dann sind die 4 Minuten auch schon längst um.
 
G

Gast2

Gast
"Zeichnen in Swing" und MVC + Oberflächenprogrammierung sind zwei verschiedene Dinge, die haben nicht viel gemeinsam.
"Zeichnen in Swing" hat eher was mit paintComponent überschreiben und dort dann linien/kreise/schriften etc. zeichen zu tun.
Du könntest dann zunächst mal die paintComponent Methode beschreiben:
- wann wird die aufgerufen (in dem zusammenhang dann noch repaint() erläutern)
- von wem wird die aufgerufen
- super.paintComponent();
Danach kannst du auf Graphics bzw. Graphics2D eingehen und beschrieben was man damit alles machen kann.

Dazu müsste auch nen tutorial in der FAQ verlinkt sein.
 

slawaweis

Bekanntes Mitglied
ich muss ein Kurzreferat über "Zeichnen in Swing" halten und lese mich deshalb in die Obeflächenprogrammierung ein. Das Referat darf maximal vier Minuten dauern und da das Kapitel so umfangreich ist, ist man schnell über dem Zeitlimit.
4 Minuten? An der Uni würde die Zeit nicht mal ausreichen seinen Vortrag vom USB-Stick auf den Präsentationsrechner zu kopieren und den Beamer zu justieren. Weiterhin ist das Thema wirklich zu umfangreich, um es in 4 Minuten überhaupt anzukratzen.

Als Anfänger weiß ich leider nicht, was für das Thema "Zeichnen in Swing" wirklich relevant ist und was nicht.
ich versuche es mal, die folgenden Punkte sind Minuten:

1. Swing ist ein Framework für Anwenderoberflächengestaltung, -verwaltung und -interaktivität. Das eigentliche Zeichnen in Swing wird von System "Java2D" übernommen, welches auch ohne Swing verwendet werden kann.

2. Der übliche Weg in Swing zu zeichnen ist die Erzeugung einer eigenen Klasse (z.B. ZeichenPanel), welche von JPanel erbt. In der eigenen Klasse wird die Methode "paintComponent(Graphics g)" überschrieben. Diese Methode wird vom jeweiligen Betriebssystem aufgerufen, wenn das Panel neugezeichnet werden muss. Die Zeichnung selber ist flüchtig, d.h. wird ein anderes Fenster über das Panel geschoben, wird ein Teil oder die ganze Zeichnung gelöscht. Wenn die Sicht auf das Panel wieder frei ist, wird "paintComponent(Graphics g)" vom Betriebssystem aufgerufen. Selber kann man diesen Vorgang mit "repaint()", welches in JPanel zu finden ist, anstoßen.

Java:
public class ZeichenPanel extends JPanel
{
 public void paintComponent(Graphics g)
  {
  super.paintComponent(g);
  }
}
a
3. Das an paintComponent übergebene Objekt "Graphics" gehört zu Java2D. Dieses Objekt stellt Methoden für Grundzeichenoperationen zu Verfügung, z.B. für Linien, Kreise, Polygone oder Text. Eigentlich ist das Objekt "Graphics" immer vom Typ Graphics2D. Es ist historisch bedingt, dass es als Graphics deklariert wird, jeder kann es selber nachlesen. So kann man immer Graphics zu Graphics2D umwandeln, sofern in der Dokumentation nicht was anderes steht. Beispiel:

Java:
public class ZeichenPanel extends JPanel
{
 public void paintComponent(Graphics g)
  {
  super.paintComponent(g);

  Graphics2D g2 = (Graphics2D)g;

  g2.setColor(Color.black);
  g2.drawLine(10, 10, 100, 100);
  }
}

4. Java2D umschließt noch eine Reihe weiterer Klassen ein. Diese sind in java.awt und den Subpakages zu finden, eine genauere Auflistung steht in der Java API Dokumentation. Java2D beherrscht geometrische Operationen, Vektor- und Rastergrafik, Text-über-Schriftarten-Darstellungen, Bildverarbeitung, Ausgabe auf den Drucker und (einen eingeschränkten) Zugriff auf die Hardware der Grafikkarte.

(Hier sind die 4 Minuten schon längst um, deshalb optional)

5. Graphics bzw. Graphics2D kann auch in einen Buffer zeichnen, welcher dann auf das JPanel kopiert wird. Ein Buffer kann als Leinwand im Speicher angesehen werden. Im Gegensatz zu einem JPanel ist diese Zeichnung nicht flüchtig. Der Umweg über einen Buffer wird zu Optimierung und für komplizierte Operationen verwendet, wo die einzelnen Pixel einer Zeichnung mehrmals gelesen und geschrieben werden.

Wenn ich auf die Architektur MVC eingehe, dürften die vier Minuten bereits ausgeschöpft sein, andererseits halte ich es doch für wichtig, um die Zusammenhänge zwischen Publisher-Subscriber, der Ereignishierarchie, -beobachtung, -behandlung und -quellen zu verstehen.
MVC hat nichts mit "Zeichnen in Swing" zu tun.

Kommt es mir nur so vor, oder gehört die GUI-Programmierung zu den schwierigsten Dingen in Java?
nein, nur zu den meist unterschätzten.

Slawa
 

Wang

Bekanntes Mitglied
Danke Slawa für das ausführliche Konzept.
Ich habe noch einige Fragen, zu den verschiedenen Punkten.

Zu 1.) AWT ist ja das, was von Anfang an existiert hat und Swing baut darauf auf und gilt als moderner.
Leider verstehe ich nicht, welche Rolle die "Java 2D API" übernimmt, denn ich dachte Swing würde zum Zeichnen vollkommen ausreichen?

Zu 3.) Ist mit "Graphics" die Klasse aus dem Package "java.awt" gemeint?


Gruß
Wang
 

slawaweis

Bekanntes Mitglied
Zu 1.) AWT ist ja das, was von Anfang an existiert hat und Swing baut darauf auf und gilt als moderner.
jain. AWT ist eine Schnittstelle zu den UI-Elementen des jeweiligen Betriebssystems. Weil dadurch die Java-Anwendungen auf jeder Plattform unterschiedliche aussahen und auch die Bedienung anders war, wurde Swing auf Basis von AWT gebaut. Während in AWT die einzelnen Komponenten vom jeweiligen Betriebssystem gezeichnet werden, worauf der Programmierer keinen Einfluss hat, wird in Swing alles innerhalb von Java gezeichnet und der Programmierer kann das Aussehen exakt bestimmten. Weiterhin sieht Swing auf jeder Plattform gleich aus.

Leider verstehe ich nicht, welche Rolle die "Java 2D API" übernimmt, denn ich dachte Swing würde zum Zeichnen vollkommen ausreichen?
Analogie zum Haus. Swing sind die Ziegel, die Fenster, die Türen, die Möbel. Java2D ist der Putz, die Farbe, die Tapeten, die Holzart, die Bilder an der Wand. Anders gesagt, Swing kümmert sich um die räumliche Verteilung und/oder Organisation von UI-Elementen. Java2D gibt ihnen das Aussehen. Weiterhin ist Java2D nicht nur auf Swing beschränkt. Damit lassen sich auch Off-Screen Operationen durchführen, wie z.B. die automatische Bearbeitung von Bildern. 2D Spiele entstehen großenteils mit Java2D und nicht mit Swing.

Zu 3.) Ist mit "Graphics" die Klasse aus dem Package "java.awt" gemeint?
ja, und Graphics2D liegt gleich daneben.

Slawa
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J SWING UI Designer und zeichnen Java Basics - Anfänger-Themen 4
T Java Swing - Dreieck zeichnen mit verschiedenen Variablen Java Basics - Anfänger-Themen 8
I Was in Swing, was in AWT zeichnen & Textfeld formatierba Java Basics - Anfänger-Themen 4
B Swing: Zeichnen mit Drag and Drop Java Basics - Anfänger-Themen 11
B Swing Rechteck zeichnen Java Basics - Anfänger-Themen 14
E Zeichnen mit Swing Java Basics - Anfänger-Themen 6
luggas89 Mit Jframe live zeichnen Java Basics - Anfänger-Themen 4
K 3D Fläche Zeichnen Java Basics - Anfänger-Themen 2
J Bild auf Hintergrundbild zeichnen Java Basics - Anfänger-Themen 5
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
P JFrame, Linien zeichnen, MouseListener Java Basics - Anfänger-Themen 2
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
V Speicherzustand zeichnen Java Basics - Anfänger-Themen 0
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
CptK Interface Bilder mit Graphics g zeichnen Java Basics - Anfänger-Themen 7
B Java JFrame zeichnen Java Basics - Anfänger-Themen 4
Mosquera f(x)=x² zeichnen Java Basics - Anfänger-Themen 5
J Graphen in Java zeichnen Java Basics - Anfänger-Themen 11
L Anfängerin möchte Linie zeichnen Java Basics - Anfänger-Themen 8
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
S Zeichnen mit Wiederholungen Java Basics - Anfänger-Themen 12
B Wie kann ich Linien rekursiv zeichnen? Java Basics - Anfänger-Themen 4
P Einen String mittig zeichnen? Java Basics - Anfänger-Themen 1
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
M Ein Bild durch Objekterzeugung zeichnen Java Basics - Anfänger-Themen 5
W Wie kann ich in Java eine Kurve aus Punkten zeichnen? Java Basics - Anfänger-Themen 25
snipesss Linie zeichnen ohne extra Klasse? Java Basics - Anfänger-Themen 3
C Umrisse von Bilddateien mithilfe Polygonen zeichnen Java Basics - Anfänger-Themen 5
G Aus einem Code ein Sequenzdiagramm zeichnen? Java Basics - Anfänger-Themen 1
K Rechtecke rekursiv zeichnen Java Basics - Anfänger-Themen 20
V Quadrate rekursiv zeichnen Java Basics - Anfänger-Themen 7
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
C Schleifenaufgabe - Molekül zeichnen Java Basics - Anfänger-Themen 6
K Ungenauigkeit beim Zeichnen von Funktionen Java Basics - Anfänger-Themen 6
H Linie zeichnen... Java Basics - Anfänger-Themen 16
N Treppe zeichnen Java Basics - Anfänger-Themen 1
M Quadrat zeichnen einfach bitte! Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
M in Java zeichnen Java Basics - Anfänger-Themen 2
J JLabel Icon neu zeichnen Java Basics - Anfänger-Themen 2
J Rechteck zeichnen mit Canvas Java Basics - Anfänger-Themen 7
D Zeichnen, Schleifen Java Basics - Anfänger-Themen 7
S Zeichnen , Schleifen Java Basics - Anfänger-Themen 4
S Rechteck zeichnen Java Basics - Anfänger-Themen 2
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S Wo beginnt ein Draw String zu zeichnen. Java Basics - Anfänger-Themen 4
S Paint Anwendung: Freihandlinien zeichnen Java Basics - Anfänger-Themen 4
llabusch Layout neu zeichnen lassen Java Basics - Anfänger-Themen 2
A Histogramm zeichnen Java Basics - Anfänger-Themen 2
S Punkt in Java zeichnen Java Basics - Anfänger-Themen 14
E Dreieck zeichnen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
C Hilfe beim Zeichnen Java Basics - Anfänger-Themen 8
D Haus zeichnen Java Basics - Anfänger-Themen 4
K Methoden Objekt auf JFrame zeichnen Java Basics - Anfänger-Themen 16
H 27 Kreise Zeichnen Java Applet Java Basics - Anfänger-Themen 2
S Problem mit "Zeichnen auf Kommando" Java Basics - Anfänger-Themen 2
M Double Punkte Zeichnen Java Basics - Anfänger-Themen 7
S Funktionen zeichnen Java Basics - Anfänger-Themen 2
2 Bild auf JApplet zeichnen Java Basics - Anfänger-Themen 18
R 2D Grafik zeichnen Java Basics - Anfänger-Themen 4
F Line zeichnen und Werte ändern Java Basics - Anfänger-Themen 6
B Grafik zeichnen Java Basics - Anfänger-Themen 25
B Erste Schritte Weihnachtsbaum zeichnen Java Basics - Anfänger-Themen 6
N Per Button Kreis zeichnen Java Basics - Anfänger-Themen 8
T mehrere Punkte zeichnen ohne löschung Java Basics - Anfänger-Themen 4
J Für 3 Sekunden etwas bestimmtes zeichnen Java Basics - Anfänger-Themen 8
C Kreis nach Mausklick zeichnen Java Basics - Anfänger-Themen 5
C Auf Button-Druck zeichnen Java Basics - Anfänger-Themen 2
R Methoden Zeichnen auf Button-Druck durch Paint-Methode Java Basics - Anfänger-Themen 2
D Klassen Zeichnen von Figuren mittels vorgegebener Klasse Java Basics - Anfänger-Themen 3
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
J Innerhalb der Border zeichnen Java Basics - Anfänger-Themen 9
J Hoher Speicherverbrauch beim Zeichnen von Images aus einer ArrayList Java Basics - Anfänger-Themen 10
A Blitze mit Linien zeichnen Java Basics - Anfänger-Themen 15
U Kreis um Textfelder zeichnen Java Basics - Anfänger-Themen 4
R Balkendiagramm zeichnen Java Basics - Anfänger-Themen 14
J Bild anhand von Koordinaten zeichnen Java Basics - Anfänger-Themen 10
B GUI Parkplatz zeichnen Java Basics - Anfänger-Themen 10
S Mehrere Zeichnungen zeichnen Java Basics - Anfänger-Themen 16
A Linie Zeichnen Applet mit Double Wert Java Basics - Anfänger-Themen 3
F Image übertragen und zeichnen Java Basics - Anfänger-Themen 8
P Funktion zeichnen Java Basics - Anfänger-Themen 6
Q Zeichnen außerhalb der paint-methode Java Basics - Anfänger-Themen 7
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
T Transparente Bilder mit Graphics zeichnen Java Basics - Anfänger-Themen 17
T Sterne zeichnen Java Basics - Anfänger-Themen 4
M Bilder laden und zeichnen Java Basics - Anfänger-Themen 3
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
S X Zeichnen als Muster ausgeben Java Basics - Anfänger-Themen 5
P Kurven zeichnen Java Basics - Anfänger-Themen 5
I dauerhaftes zeichnen Java Basics - Anfänger-Themen 3
H Zeichnen in JPanel Java Basics - Anfänger-Themen 8
W Funktions-Graphen "zeichnen" Java Basics - Anfänger-Themen 2
J Bilder auf Bilder zeichnen Java Basics - Anfänger-Themen 8
I Rechteck Zeichnen Java Basics - Anfänger-Themen 9
N Linie auf spezielle Area zeichnen Java Basics - Anfänger-Themen 9
K Auf JPanel Zeichnen Java Basics - Anfänger-Themen 8
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben