Mittwoch, 9. Januar 2013
Java Grafik/GUI (POS1: 3BHIF)
Einfache Grafik
Schreiben Sie eine Klasse
Verwenden Sie eine Liste (
Experimente mit Swing-Komponenten
Alle Steuerelemente von Swing (
Im
Damit wird im aktuellen Verzeichnis ein Projektverzeichnis
Das Projekt wird eventuell um neue Klassen ergänzt. Sie können sich die Änderungen holen:
Sollten Sie nicht auf einem Schul-PC das Repository klonen wollen, dann müssen Sie das Verzeichnis erst "mounten" und dann klonen:
Neue Versionen bekommen Sie sinngemäß mit
Zurück zu den Steuerelementen/JavaBeans.
Im Projekt
Das sieht etwa folgendermaßen aus:
Sie können auch mehrere Steuerelemente auf der Kommandozeile angeben. Z.B.:
Experimentieren Sie mit weiteren Steuerelementen (A Visual Guide to Swing Components).
Experimentieren Sie mit folgender Klasse. Sie zeigt die Verschachtelung verschiedener Container:
Im package
Ein Beispiel für das GroupLayout finden Sie in
Verwenden Sie diese Beispiele als Basis für eigene Projekte!
Schreiben Sie eine Klasse
PaintQuadrats
, welche in einem Fenster (JFrame) eine Reihe von Quadraten zeichnet, die fortlaufend nummeriert sind:
Verwenden Sie eine Liste (
ArrayList
oder ein Feld) von Knoten (Node
), die "sich zeichnen" (paint(Graphics g)
) können. In der Methode paintComponents(Graphics g)
des JPanels
müssen dann für alle Knoten deren paint()
-Methode aufgerufen werden.
Experimente mit Swing-Komponenten
Alle Steuerelemente von Swing (
javax.swing.*
) und AWT können auch als sogenannte Java Beans verwendet werden und damit auch dynamisch geladen werden. Eine JavaBean besitzt immer einen Standardkonstruktor. Dies ermöglicht eine standardisierte Instanzierung (vgl. Java Beans).
Im
public/3bhif/java-gui-experiments/.hg
finden Sie ein Mercurial Repository, welches ein Eclipse-Projekt mit den nötigen Klassen für die folgenden Beispiele enthält. Sie können in der Schule das Repository einfach klonen:
$ hg clone /home/teachers/hp/public/3bhif/java-gui-experiments Zielverzeichnis: java-gui-experiments Aktualisiere auf Zweig default 25 Dateien aktualisiert, 0 Dateien zusammengeführt, 0 Dateien entfernt, 0 Dateien ungelöst $
Damit wird im aktuellen Verzeichnis ein Projektverzeichnis
java-gui-experiments
erzeugt.
Das Projekt wird eventuell um neue Klassen ergänzt. Sie können sich die Änderungen holen:
$ cd java-gui-experiments $ hg pull /home/teachers/hp/public/3bhif/java-gui-experiments Hole von /home/teachers/hp/public/3bhif/java-gui-experiments Suche nach Änderungen Keine Änderungen gefunden $
Sollten Sie nicht auf einem Schul-PC das Repository klonen wollen, dann müssen Sie das Verzeichnis erst "mounten" und dann klonen:
$ mkdir ~/edvossh $ sshfs user@edvossh.htlwrn.ac.at:/home/teachers/hp/public/3bhif ~/edvossh $ hg clone ~/edvossh/java-gui-experiments Zielverzeichnis: java-gui-experiments Aktualisiere auf Zweig default 25 Dateien aktualisiert, 0 Dateien zusammengeführt, 0 Dateien entfernt, 0 Dateien ungelöst $
user
ist natürlich mit Ihrem Usernamen in der Schule zu ersetzen. Die Eingabe des Passworts ist in obigen Beispielen nicht angezeigt,
Neue Versionen bekommen Sie sinngemäß mit
hg pull
ins lokale Repository.
Zurück zu den Steuerelementen/JavaBeans.
Im Projekt
java-gui-experiments/bin
können Sie Klassen nun aufrufen. Ein Beispiel zum Demonstrieren eines JButtons mit der Beschriftung "Hello World!" in einer 48 Punkt Schriftart:
$ cd java-gui-experiments/bin/ $ java je3.gui.ShowBean javax.swing.JButton 'text=Hello World!' font=helvetica-bold-48
Das sieht etwa folgendermaßen aus:
Sie können auch mehrere Steuerelemente auf der Kommandozeile angeben. Z.B.:
$ cd java-gui-experiments/bin/ $ java je3.gui.ShowBean javax.swing.JButton 'text=Hello World!' font=helvetica-bold-48\ javax.swing.JRadioButton 'text=pick me'\ java.awt.Button label=Hello javax.swing.JSlider
Experimentieren Sie mit weiteren Steuerelementen (A Visual Guide to Swing Components).
Experimentieren Sie mit folgender Klasse. Sie zeigt die Verschachtelung verschiedener Container:
package je3.gui; import javax.swing.*; import java.awt.*; /** * A component subclass that demonstrates nested containers and components. * It creates the hierarchy shown below, and uses different colors to * distinguish the different nesting levels of the containers * * Containers---panel1----button1 * | |---panel2----button2 * | | |----panel3----button3 * | |------panel4----button4 * | |----button5 * |---button6 */ public class Containers extends JPanel { public Containers( ) { this.setBackground(Color.white); // This component is white this.setFont(new Font("Dialog", Font.BOLD, 24)); JPanel p1 = new JPanel( ); p1.setBackground(new Color(200, 200, 200)); // Panel1 is darker this.add(p1); // p1 is contained by this component p1.add(new JButton("#1")); // Button 1 is contained in p1 JPanel p2 = new JPanel( ); p2.setBackground(new Color(150, 150, 150)); // p2 is darker than p2 p1.add(p2); // p2 is contained in p1 p2.add(new JButton("#2")); // Button 2 is contained in p2 JPanel p3 = new JPanel( ); p3.setBackground(new Color(100, 100, 100)); // p3 is darker than p2 p2.add(p3); // p3 is contained in p2 p3.add(new JButton("#3")); // Button 3 is contained in p3 JPanel p4 = new JPanel( ); p4.setBackground(new Color(150, 150, 150)); // p4 is darker than p1 p1.add(p4); // p4 is contained in p1 p4.add(new JButton("#4")); // Button4 is contained in p4 p4.add(new JButton("#5")); // Button5 is also contained in p4 this.add(new JButton("#6")); // Button6 is contained in this component } }
Im package
je3.gui
finden Sie ein paar Klassen *Layout*
, welche die verschiedenen Layoutmanager demonstrieren. Dokumentation finden Sie hier: Lesson: Laying Out Components Within a Container
Ein Beispiel für das GroupLayout finden Sie in
layout.Find
, welches etwa so aussieht:
Verwenden Sie diese Beispiele als Basis für eigene Projekte!
Labels: Aufgabe, Java, POS1-3, User Interface
Abonnieren Posts [Atom]
Kommentar veröffentlichen