Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
mir ist aufgefallen, dass SWING/AWT meine große Achillesferse ist, nachdem ich gesehen habe, was Medieninformatiker graphisch so alles produzieren können (bin Informatiker). In meinem Java-Buch "Java als erste Programmiersprache: Vom Einsteiger zum Profi" gibt es zwar ein Kapitel mit knapp 100 Seiten über das Thema SWING/AWT, aber dieses Kapitel beschränkt sich logischerweise nur auf die Basics. Ich habe im Laufe des Studiums bereits viel Geld für Literatur ausgegeben und teilweise waren einige Fehlgriffe dabei.
Deshalb meine Frage: kann jemand ein Buch empfehlen (vorzugsweise auf Deutsch), dass bzgl. SWING/AWT über die Basics deutlich hinausgeht und einem diese doch komplexe Materie gut vermittelt?
Schade, dass sich bisher sonst niemand zu Wort gemeldet hat...
Mir geht es nur um Desktop-Anwendungen und SWING/AWT sind die beiden Technologien, mit denen ich bereits mehr oder weniger Erfahrung gesammelt habe. Von daher wäre es nicht wirklich klug, wenn ich mich jetzt auf etwas komplett Neues konzentrieren würde.
Ich bin mir sicher, dass es hier im Forum einige Leser gibt, die mit SWING/AWT bestens vertraut sind und die wissen, wie man sich diese Thematik am besten aneignet.
danke, aber dieses Buch deckt ebenfalls nur die Basics ab.
Vielleicht mal ein kleines Beispiel, um zu verdeutlichen, was ich eigentlich suche (Aufgabe und Lösung hier nicht vollständig).
In die Radaranzeige sollen nun die Flugzeuge integriert werden. Die Flugzeuge sollen hierzu den Mittelpunkt des Radars auf einer Kreisbahn mit einem zufällig gewählten Radius und einer zufälligen Geschwindigkeit umfliegen.
// Datei: Radar.java
import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Vector;
public class Radar extends Applet
{
private static final long serialVersionUID = 1L;
private double aktuellerWinkel = 0;
private Vector<SimuliertesFlugzeug> flugzeuge;
public void init()
{
setSize (600, 600);
flugzeuge = new Vector<SimuliertesFlugzeug>();
// Thread anlegen, der das Radar 25 mal pro Sekunde neu zeichnet
ZyklischerAufruf zyklischerAufruf = new ZyklischerAufruf (this);
zyklischerAufruf.start();
// Thread anlegen, der zufaellig neue Flugzeuge anlegt
FlugzeugGenerator generator = new FlugzeugGenerator (this);
generator.start();
}
public synchronized void update (Graphics g)
{
aktuellerWinkel += 0.5;
paint (g);
for (SimuliertesFlugzeug flugzeug : flugzeuge)
{
flugzeug.aktualisieren();
}
}
public void paint (Graphics g)
{
g.clearRect (0, 0, 600, 600);
g.setColor (Color.green);
for (int i = 25; i <= 300; i = i + 25)
{
g.drawOval (0 + i, 0 + i, 600 - 2 * i, 600 - 2 * i);
}
for (int winkel = 0; winkel <= 360; winkel = winkel + 45)
{
zeichneLinie (g, winkel);
}
zeichneLinie (g, aktuellerWinkel);
for (SimuliertesFlugzeug flugzeug : flugzeuge)
{
g.drawOval (300 + flugzeug.getX()-2, 300 + flugzeug.getY()-2, 5, 5);
}
g.setColor(Color.BLACK);
g.drawString ("Anzahl Flugzeuge: " + flugzeuge.size(), 470, 20);
}
private void zeichneLinie (Graphics g, double winkel)
{
double rad = Math.toRadians (winkel);
int x = (int) (Math.cos (rad) * 275);
int y = (int) (Math.sin (rad) * 275);
g.drawLine (300, 300, x + 300, y + 300);
}
public synchronized void hinzufuegenFlugzeug (SimuliertesFlugzeug flugzeug)
{
flugzeuge.add (flugzeug);
}
}
Die gleiche Aufgabe, mit dem Ziel das Flackern zu entfernen:
Die Ausgabe des Radarschirms flackert stellenweise. Um das Flackern zu vermeiden, muss die Ausgabe zwischen gepuffert werden. Diese Methode wird "Double-Buffering" genannt. Als Hilfestellung kann folgender Link im Internet dienen:
Beim Double-Buffering werden die Änderungen am Bildschirm nicht nach und nach geschrieben, sondern erst einmal in einen Puffer. Dieser Puffer wird dann auf einmal auf den Bildschirm transferiert. Dies sollte das Flackern ausschalten und eine ruhige Bewegung des Zeigers ermöglichen.
(Quelle: Aufgabe 20.6.2 und Aufgabe 20.6.3, Java als erste Programmiersprache: Vom Einsteiger zum Profi)
Extrem hilfreich für mich wäre also ein Buch, das aus vergleichbaren Aufgaben (inklusive Musterlösungen) besteht und das einem Feinheiten wie das "Double-Buffering" vermittelt.
Außer diesem habe ich auch kein Buch über Swing, kann also keins empfehlen. Ich lerne einfach aus den online Tutorials. Ein Buch über AWT lohnt sich kaum, weil AWT veraltet ist.
Ich werde mir ein Buch von denen kaufen, die slawaweis genannt hat, um meine Basis zu erweitern. Scheinbar ist das doch ein Thema, bei dem online tutorials das geeignetere Medium darstellen. So "Spielereien" wie die oben genannte Radaraufgabe sind im beruflichen Alltag eines Softwareentwicklers vermutlich eher die Ausnahme, aber es kann ja nicht schaden, wenn man so etwas umsetzen kann...