Seminar Java Einführung

Werbung
Markus Knauer
Wera AG
Seminar Java
08.04.17
Seminar Java Einführung
Aufgaben 3. Woche
AWT, graphische Benutzeroberfläche
(10 Punkte)
In dieser Übungsaufgabe sollen Sie den Umgang mit den Komponenten aus dem AWT und
Containern üben und gleichzeitig etwas Vorarbeit für die abschließende Übung der nächsten Woche
leisten. Zu erstellen ist eine Taschenrechnersimulation für Plus und Minus als Applikation, die aber in
dieser Woche noch keinerlei Funktionalität aufweist. Wir beschränken uns also ausschließlich auf die
Oberfläche. Das Ergebnis soll in etwa so aussehen:
Schreiben Sie eine Klasse Taschenrechner abgeleitet von Frame, so dass Sie eine grafische
Applikation erhalten. Die Zahlen von 0 bis 9 sowie die mathematischen Funktionen +, -, = und
zusätzlich noch C (clear) sollen durch Buttons (java.awt.Button) abgebildet werden; die
Zahlenausgabe soll über ein Textfeld erfolgen (java.awt.TextField).
Wie werden nun die einzelnen Komponenten (Buttons, Textfelder, ...) auf eine bestimmte Weise
angeordnet? Dazu gibt es in Java die sogenannten Layoutmanager, welche die Komponenten in
bestimmter Weise auf dem Bildschirm anordnen.
Wie ist jetzt vorzugehen? Es gibt verschiedene Layoutmanager und zwei der wichtigsten will ich hier
vorstellen: Das GridLayout (mit ihm werden die Komponenten in Spalten und Reihen angeordnet)
und das BorderLayout, das die Fläche in ein „Oben“, „Unten“, „Rechts“, „Links“ und ein Zentrum
unterteilt. Die korrekten Bezeichnungen für oben, unten, ... sind allerdings TOP, BOTTOM, WEST,
EAST und CENTER. (Verwendungsbeispiele sind unter Examples/example24/AWTContainer.html zu
finden; Referenzdokumentation java.awt.BorderLayout und java.awt.GridLayout)
Vorgehen: Das komplette Frame wird mit dem Befehl
setLayout(new BorderLayout());
zunächst einmal unterteilt. Mit einem Befehl wie
add( new TextField( “Initial Text”, 30 ), BorderLayout.NORTH );
wird beispielsweise im oberen Bereich des Fensters ein Textfeld erzeugt.
Im CENTER wollen wir nun die Buttons mit den Zahlen einfügen (die mathematischen Operationen
funktionieren in der gleichen Weise mit EAST). Dazu erzeugen wir zunächst ein Panel-Objekt, setzen
bei diesem das GridLayout und fügen dort die Buttons ein. In einem zweiten Schritt wird dieses Panel
dann mit add an der Stelle BorderLayout.CENTER in unser Frame eingefügt.
Panel zahlenPanel = new Panel();
zahlenPanel.setLayout( new GridLayout( 4, 4 ) );
zahlenPanel.add( … hier das Button-Objekt einfügen );
... alle Buttons eingefügt? ...
add( zahlenPanel, BorderLayout.CENTER );
Ausführliche Beispiele sind im bei den Beispielen im Web zu finden unter example24. Hier gibt es
Beispiele zu GridLayout und zu BorderLayout und auch zur Verschachtelung von Layouts.
Seite 1 von 3
Markus Knauer
Wera AG
Seminar Java
08.04.17
Um das ganze noch weiter zu vereinfachen, gebe ich einmal ein grobes Gerüst für die Datei
Taschenrechner.java. Sie können den WindowClosingAdapter verwenden und müssen nur
noch an den gekennzeichneten Stellen Quellcode einfügen.
import java.awt.*;
import java.awt.event.* ;
public class Taschenrechner extends Frame {
// Hier sollten Sie etwas ergaenzen
// ...
public static void main( String[] args )
{
Taschenrechner window = new Taschenrechner();
}
public Taschenrechner()
{
super( "Mini-Taschenrechner" );
addWindowListener( new WindowClosingAdapter( true ) );
setSize( 250, 200 );
// Hier muessen Sie noch viel ergaenzen
// ....
setVisible( true );
}
}
AWT, Grafikausgabe und Animation
(15 Punkte)
Hier sollen Sie die Drehanimation des Übungsblattes 4 programmieren; eine entsprechende
Beispielklasse AnimationFrame.class liefere ich mit. Schreiben Sie eine eigene Klasse
AnimationFrame mit gleicher Funktionalität, leiten Sie wieder von Frame ab und überschreiben Sie
die Methode paint() mit Ihrer eigenen Version:
import java.awt.*;
public class AnimationFrame extends Frame {
public static void main( String[] args )
{
AnimationFrame window = new AnimationFrame();
}
public Aufgabe04()
{
super( "Drehanimation" );
setBackground( Color.black );
setForeground( Color.white );
setSize( 200, 200 );
setVisible( true );
}
public void paint( Graphics g )
{
// HIER MUESSEN SIE IHREN CODE SCHREIBEN
}
}
Sie werden eine unendlich lang laufende Schleife brauchen, eventuell das Konstrukt
try{ Thread.sleep( 5 ); }
catch( Exception e ) {}
mit dem Sie eine Pause von zum Beispiel 5 Milisekunden
erzwingen können, die Methode drawString aus
Graphics, getSize().width und .height()zur
Größenbestimmung des Fensters, setColor zum
Setzen der Farbe und Math.sqrt(...) zur
Wurzelberechnung.
y
r² = x² + y²
y = sqrt( r² - x² )
r
y
x
x
Seite 2 von 3
Markus Knauer
Wera AG
Seminar Java
08.04.17
Und Sie brauchen etwas Geduld zum Finden des Algorithmus (vielleicht hilft es ja, sich das alles auf
ein Blatt Papier zu zeichnen)... ;-)
Seite 3 von 3
Herunterladen