Grafische Benutzeroberfläche

Slides:



Advertisements
Ähnliche Präsentationen
Ein Beispiel in Java.
Advertisements

Praktikum Systementwicklung
Java: Programmierung grafischer Oberflächen
Java: Programmierung grafischer Oberflächen
MVC.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Abstrakte Klassen.
Wie überwacht man Objekte im "Alltag" ?. Indem man "Wanzen" an diese anbringt.
Ein Beispiel in Java.
Erweiterte Zuweisungskompatibilität
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Assoziationen (Beziehungen). Zwischen Objekten kann es eine Beziehung geben.
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Sommersemester 2003 Lars Bernard
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
Java Layout Manager (JLM) Marc Dziadek
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Java-Kurs Grafik Julian Drerup.
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
UNDO & SELECT Vortrag : Martin Hiersche
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
© 2002 Dr. Cavelius - Ley - Pohlig - Taulien Step by step zum JFrame 1 Zum JFrame Step by step by step by step by step by step by step by step by.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
© 2006 MPohlig Grundkurs Informatik mit Java 1 JFrame-Vorlage Step by step by step by step by step by step by step by step by.
© 2004 Pohlig - Taulien Swing Ereignissteuerung. © 2004 Pohlig - Taulien GK Informatik mit Java 2 Auf Button-Klick reagieren.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
AWT und JFC Abstract Windowing Toolkit
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Java: Programmierung grafischer Oberflächen
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Mahmoud Zoabi Khaled Isa
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Objektorientiertes Konstruieren
Programmierpraktikum Java SS 2005
Java-AG Benutzeroberflächen Juni 2001 Michael Haas.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
© 2005 Pohlig Informatik Jg. 11 mfH Michael Pohlig 1 Zum JFrame Step by step by step by step by step by step by step by step by.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
1 Dörschlag IKG; Dörschlag, Plümer, Gröger; Einführung in die Programmierung mit Java WS03/04 Malprogramm der vollständige und kommentierte Quellcode für.
Einführung in die OOP in Java
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Verwendung von Graphical-User-Interfaces der Bibliothek: javax.swing.*
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Konstruktoren.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
 Präsentation transkript:

Grafische Benutzeroberfläche Fenster

Vorbemerkung Für die hier verwendeten Programme wurden aus didaktischen Gründen folgende Vereinbarungen getroffen;

Alle Klassen, in denen sich die Methode main befindet, beginnen mit Main... Bem: Die Programmdatei muss also den gleichen Namen haben und public sein.

2) Alle von uns frei wählbaren Bezeichnungen für Klassen, Variablen, Methoden usw. beginnen mit dem Bezeichner my... Ausnahme: Einfache Variablen wie z.B. i,j, usw.

import java.awt.*; import javax.swing.*; public class MainFenster1 { public static void main(String[] args) { JFrame myF = new JFrame(); myF.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); myF.setLocation(200,200); myF.setSize(400,200); myF.setVisible(true); } Hier wird ein Objekt, also myF der Klasse JFrame, also ein Fenster erzeugt und später auf den Bildschirm gebracht. Deshalb muss "dankenswerterweise" der Bauplan nicht von uns gebastelt werden.

import java.awt.*; import javax.swing.*; public class MainFenster1 { public static void main(String[] args) { JFrame myF = new JFrame(); myF.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); myF.setLocation(200,200); myF.setSize(400,200); myF.setVisible(true); } Programm wird beendet (aus dem Arbeitsspeicher entfernt), wenn Fenster weggeklickt wird. Nachprüfen mit Task-Manager Linke obere Ecke des Fensters bringt das Fenster auf den Bildschirm Grösse des Fensters festlegen, das auf den Bildschirm kommt

import java.awt.*; import javax.swing.*; public class MainFenster1 { public static void main(String[] args) { JFrame myF = new JFrame(); myF.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); myF.setLocation(200,200); myF.setSize(400,200); myF.setVisible(true); } Aus Gründen der OOP soll zukünftig dieses Fenster in einer eigenen, selbst gebastelten Klasse entworfen werden. Welche Eigenschaft der OOP muss dabei verwendet werden? Die Vererbung!

Deswegen ...

import java.awt.*; import javax.swing.*; public class MainFenster1 { public static void main(String[] args) { MyFenster myF = new MyFenster(); myF.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); } Hier wird ein Objekt, also myF, der selbstgebastelten Klasse MyFenster erzeugt, d.h. auf den Bildschirm gebracht Programm wird beendet (aus dem Arbeitsspeicher entfernt), wenn Fenster weggeklickt wird. Nachprüfen mit Task-Manager

class MyFenster extends JFrame{ private JButton myB1, myB2; private JTextField myT1, myT2; private JLabel myL1, myL2; private Container myCont; private GridLayout myGL_2_3; public MyFenster(){ Buttons deklarieren Textfelder deklarieren Labels deklarieren Liefert die Stelle, an der die sichtbaren Komponenten (Buttons, usw.) an das Fenster montiert werden. Layout deklarieren, es besteht aus 2 Zeilen und 3 Spalten Ein Layout ist eine Vorgabe, wie die sichtbaren Komponenten innerhalb beim Einfügen (mit add) in das Fenster oder in ein Panel (siehe später) angeordnet werden

class MyFenster extends JFrame{ private JButton myB1, myB2; private JTextField myT1, myT2; private JLabel myL1, myL2; private Container myCont; private GridLayout myGL_2_3; public MyFenster(){ 1) Beim GridLayout werden die Elemente zeilenweise eingefügt, d.h. zuerst wird die 1. Zeile aufgefüllt, dann die 2. Zeile, usw. Mit myGL_2_3 = new GridLayout(2,3); wird ein Layout von 2 Zeilen und 3 Spalten angelegt. 2) Es müssen _ALLE_ Zeilen bis zur letzten Spalte befüllt werden

myT1=new JTextField("hier eingeben",30); myB1=new JButton("Go"); myB2=new JButton("Ok"); myT1=new JTextField("hier eingeben",30); myT2=new JTextField("hier eingeben",30); myL1=new JLabel("Euro-->Dollar"); myL2=new JLabel("Dollar-->Euro"); myCont=getContentPane(); myGL_2_3=new GridLayout(2,3); myCont.setLayout(myGL_2_3); Buttons anlegen Textfelder anlegen Labels anlegen Stelle des Anmontierens bestimmen GridLayout mit 2 Zeilen und 3 Spalten anlegen. Die Stelle, an der die Elemente angefügt werden, muss mit einem Layout versehen werden.

myB1=new JButton("Go"); myB2=new JButton("Ok"); myT1=new JTextField("hier eingeben",30); myT2=new JTextField("hier eingeben",30); myL1=new JLabel("Euro-->Dollar"); myL2=new JLabel("Dollar-->Euro"); myCont=getContentPane(); myGL_2_3=new GridLayout(2,3); myCont.setLayout(myGL_2_3); Die sichtbaren Komponenten müssen an unser Fenster “MyFenster“ an eine dafür vorgesehene, ganz bestimmte Stelle, montiert werden. Die Methode getContentPane() liefert die Stelle, an die das Panel an den Top-Level-Container JFrame montiert werden muß.

myCont.add(myL1); myCont.add(myT1); myCont.add(myB1); myCont.add(myL2); myCont.add(myT2); myCont.add(myB2); setTitle("Meine Zeichnung"); setLocation(30,60); setSize(600,400); setVisible(true); } Lables, Textfelder und Buttons werden an das Fenster montiert unter der Regie des GridLayouts, das aus 2 Zeilen und 3 Spalten besteht. Fensterüberschrift Linke obere Ecke des Fensters Grösse des Fensters festlegen bringt das Fenster auf den Bildschirm

Man kann nicht nur direkt am Fenster sichtbare Komponenten (Buttons, Man kann nicht nur direkt am Fenster sichtbare Komponenten (Buttons, ...) anbringen, sondern Behälter (Container), in die man (wieder Untercontainer) oder sichtbare Komponenten anbringt. Diese Behälter haben die ähnliche Bedeutung wie die Ordner im Explorer. Diese Behälter werden realisiert durch Objekte vom Typ JPanel. Sie werden hier auch oft Zeichenflächen genannt.

Im Folgenden sollen hier 2 Zeichenflächen an das Fenster montiert werden, wobei in diese Zeichenflächen vorher sichtbare Komponenten eingefügt wurden. Wichtig: Auch diese Zeichenflächen müssen (genauso wie die Stelle, an der wiederum diese angebracht werden) ein Layout bekommen (müssen "formatiert" werden).

In diesen 2 Zeichenflächen sollen jeweils 1 Button, 1 Label und 1 Textfeld angebracht werden. Damit diese sichtbaren Komponenten nicht zu groß werden, sollen zusätzlich noch weitere "DummyLabels" angebracht werden. Konkret: (siehe nächste Folie)

Konkret: 1. Zeichenfläche: Button | Label | Textfeld | Dummy Dummy | Dummy | Dummy | Dummy 2. Zeichenfläche: Dummy | Dummy | Dummy | Dummy Button | Label | Textfeld | Dummy

import java.awt.*; import javax.swing.*; public class MainFenster1 { public static void main(String[] args) { MyFenster myF = new MyFenster(); myF.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); } Das gleiche wie vorher... Was neu hinzukommt wird rot gekennzeichnet.

Zeichenflächen deklarieren class MyFenster extends JFrame{ private JButton myB1, myB2; private JTextField myT1, myT2; private JLabel myL1, myL2; // Zeichenflächen private JPanel myPan1; private JPanel myPan2; private Container myCont; private GridLayout myGL_2_1; private GridLayout myGL1_2_4; private GridLayout myGL2_2_4; public MyFenster(){ Zeichenflächen deklarieren Für jede Zeichenfläche ein eigenes Layout (auch wenn alle Layouts die gleiche Zeilen- und Spaltenzahl haben).

myT1=new JTextField("hier eingeben",30); myB1=new JButton("Go"); myB2=new JButton("Ok"); myT1=new JTextField("hier eingeben",30); myT2=new JTextField("hier eingeben",30); myL1=new JLabel("Euro-->Dollar"); myL2=new JLabel("Dollar-->Euro"); myPan1=new JPanel(); myPan2=new JPanel(); myCont=getContentPane(); myGL_2_1=new GridLayout(2,1); myGL1_2_4=new GridLayout(2,4); myGL2_2_4=new GridLayout(2,4); myCont.setLayout(myGL_2_1); myPan1.setLayout(myGL1_2_4); myPan2.setLayout(myGL2_2_4); Zeichenflächen anlegen GridLayouts anlegen GridLayouts an die entsprechenden Stellen anbringen

myPan1.add(myL1); myPan1.add(myT1); myPan1.add(myB1); myPan1.add(new JLabel()); Anbringen des Labels, Textfelds und Buttons an die 1. Zeichenfläche. Anbringen der DummyLabels Beachte: Durch jedes new JLabel() wird ein neues Objekt angelegt. Man hat nachher also 5 verschiedene JLabels Label Textfeld Button DummyLabel DummyLabel DummyLabel DummyLabel DummyLabel

myPan2.add(new JLabel()); myPan2.add(myL2); myPan2.add(myT2); myPan2.add(myB2); Anbringen der DummyLabels Anbringen des Labels, Textfelds und Buttons an die 2. Zeichenfläche. Beachte: Durch jedes new JLabel() wird ein neues Objekt angelegt. Man hat nachher also 5 verschiedene JLabels DummyLabel DummyLabel DummyLabel DummyLabel Label Textfeld Button DummyLabel

Anbringen der zwei Zeichenflächen an das Fenster myCont.add(myPan1); myCont.add(myPan2); setTitle("Meine Zeichnung"); setLocation(30,60); setSize(600,400); setVisible(true); }

Zeichnen mit Java

Um in Java zu zeichnen, müssen alle Linien, Kreise, usw Um in Java zu zeichnen, müssen alle Linien, Kreise, usw. in eine Zeichenfläche (JPanel) gezeichnet werden. Aus Demogründen soll hier neben der Zeichenfläche noch eine weitere Zeichenfläche erstellt werden, in die nur sichtbare Elemente (1 Label, 1 Textfeld, 1 Button) montiert werden sollen.

Gezeichnet wird durch den Aufruf der Methode (hier müssen dann z. B Gezeichnet wird durch den Aufruf der Methode (hier müssen dann z.B. die Befehle zum Zeichnen von Ellipsen, Linien, Rechtecken, usw. stehen) paintComponent(Graphics g) Diese soll niemals direkt innerhalb des selbst geschriebenen Programms aufgerufen werden ! Java (bzw. das Betriebssystem) entscheidet selbst, wenn es paintComponent(Graphics g) aufruft. Dies geschieht:

--> bei der ersten Anzeige des Fensters (setVisible(true)) --> nachdem ein Fenster vergrößert (verkleinert) wurde, --> nach dem Wegziehen überlagernder Fenster (verdeckte Elemente werden aufgedeckt) --> nach dem Aufruf des Befehls repaint() im Programm

Bemerkung: 1) Den Parameter Graphics g in paintComponent(Graphics g) kann man sich als den Teil des Bildspeicherbereichs vorstellen, der die zugehörige grafische Komponente (z.B. Ellipse) auf dem Bildschirm repräsentiert.

2) Die erste Anweisung in paintComponent(Graphics g) sollte super 2) Die erste Anweisung in paintComponent(Graphics g) sollte super.paintComponent(g) sein, da super.paintComponent(g) die Methode paintComponent(g) der Vaterklasse aufruft. Die Standard-Implementation dieser Methode der Klasse JPanel löscht den kompletten Inhalt des Panels. Ansonsten wird auch noch der alte Inhalt des Panels auf dem Bildschirm ausgegeben.

Wie kann der Programmierer eine Zeichenfläche (Panel) erzeugen und in diese Ellipsen, Linien, Rechtecke, usw. anbringen? Zusätzlich soll er außerdem noch die ganzen Möglichkeiten von JPanel (z.B. wird durch paintComponent automatisch die Zeichnung auf den Bildschirm gebracht) verwenden können!

Indem man eine Klasse bastelt, die von JPanel erbt !

import java.awt.*; import javax.swing.*; public class MainZeichnen1 { public static void main(String[] args) { MyFenster myf = new MyFenster(); myf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); } Das gleiche wie vorher...

class MyFenster extends JFrame{ private JButton myB1; private JTextField myT1; private JLabel myL1; private JPanel myPan1; private MyZeichenflaeche myZf1; private Container myCont; private BorderLayout myBoLa; private GridLayout myGL_1_2; public MyFenster(){ Ein JPanel deklarieren Eine selbstgebastelte Zeichenflaeche deklarieren Nur für myPan1 braucht man ein Layout: Da an myZf1 keine sichtbaren Komponenten (wie Buttons, usw.) angebracht werden.

class MyFenster extends JFrame{ private JButton myB1; private JTextField myT1; private JLabel myL1; private JPanel myPan1; private MyZeichenflaeche myZf1; private Container myCont; private BorderLayout myBoLa; private GridLayout myGL_1_2; public MyFenster(){ Ein JPanel deklarieren Eine selbstgebastelte Zeichenflaeche deklarieren Das BorderLayout unterteilt in 5 Bereiche: North, South, East, West, Center. Einem Bereich kann dabei immer nur eine Komponente (z.B. ein Button) zugeordnet werden. Will man einem Bereich mehrere Komponenten zuordnen, muß dieser Bereich auch mit einem Layout-Manager bestückt werden (siehe nächste Folien). Wird ein Bereich nicht gefüllt, wird diese Fläche von den anderen Bereichen genutzt. Ein Border-Layout, siehe wie folgt aus (wenn alle Bereiche gefüllt sind)...

NORTH EAST WEST CENTER SOUTH

Wichtige Bemerkung: Wenn kein Layout-Manager benutzt wird, gilt standardmäßig folgende Zuweisung (Vorbelegung): JFrame-Objekt --> BorderLayout JPanel-Objekt --> FlowLayout

myT1 = new JTextField("hier eingeben",30); myB1 = new JButton("Go"); myT1 = new JTextField("hier eingeben",30); myL1 = new JLabel("Rechts Text eingeben"); myPan1 = new JPanel(); myZf1 = new MyZeichenflaeche(); myCont = getContentPane(); myBoLa = new BorderLayout(); myGL_1_2 = new GridLayout(1,2); myCont.setLayout(myBoLa); myPan1.setLayout(myGL_1_2); Zeichenflächen anlegen Selbstgebasteltes Objekt der KLasse MyZeichenflaeche anlegen.

myPan1.add(myL1); myPan1.add(myT1); myPan1.add(myB1); myCont.add(myZf1,BorderLayout.CENTER); myCont.add(myPan1,BorderLayout.SOUTH); setTitle("Meine Zeichnung"); setLocation(30,60); setSize(600,800); setVisible(true); } Anbringen des Labels, Textfelds und Buttons an die 1. Zeichenfläche. Anbringen der zwei Zeichenflächen an das Fenster

class MyZeichenflaeche extends JPanel{ public void paintComponent(Graphics myG){ Color myFarbe = new Color(100, 250, 200); myG.setColor(myFarbe); myG.drawOval(100, 50, 250, 300); myG.fillOval(100, 50, 250, 300); myG.setColor(Color.red); myG.drawString("Das bin ich",200,20); myG.drawLine(150,160,180,160); myG.drawLine(270,160,300,160); myG.drawLine(230,200,230,230); myG.drawRect(200,280,50,30); } Diese Farbe setzen Eigene Farbe basteln: 150, 180, 234 sind die Rot-, Grün- und Blauteile einer Farbe jeweils im Bereich zwischen 0 und 255

class MyZeichenflaeche extends JPanel{ public void paintComponent(Graphics myG){ Color myFarbe = new Color(100, 250, 200); myG.setColor(myFarbe); myG.drawOval(100, 50, 250, 300); myG.fillOval(100, 50, 250, 300); myG.setColor(Color.red); myG.drawString("Das bin ich",200,20); myG.drawLine(150,160,180,160); myG.drawLine(270,160,300,160); myG.drawLine(230,200,230,230); myG.drawRect(200,280,50,30); } Zeichnet die Randlinie einer Ellipse, die sich in einem gedachten Rechteck befindet. Der linke obere Punkt hat die Koordinaten Koordinate x = 100, Koordinate y = 50. Die Breite des Rechtecks in x-Richtung = 250 Die Breite des Rechtecks in y-Richtung = 300

class MyZeichenflaeche extends JPanel{ public void paintComponent(Graphics myG){ Color myFarbe = new Color(100, 250, 200); myG.setColor(myFarbe); myG.drawOval(100, 50, 250, 300); myG.fillOval(100, 50, 250, 300); myG.setColor(Color.red); myG.drawString("Das bin ich",200,20); myG.drawLine(150,160,180,160); myG.drawLine(270,160,300,160); myG.drawLine(230,200,230,230); myG.drawRect(200,280,50,30); } Füllt die Ellipse mit der vorher gesetzten Farbe Die Farbe rot auswählen (setzen) Text ausgeben

class MyZeichenflaeche extends JPanel{ public void paintComponent(Graphics myG){ Color myFarbe = new Color(100, 250, 200); myG.setColor(myFarbe); myG.drawOval(100, 50, 250, 300); myG.fillOval(100, 50, 250, 300); myG.setColor(Color.red); myG.drawString("Das bin ich",200,20); myG.drawLine(150,160,180,160); myG.drawLine(270,160,300,160); myG.drawLine(230,200,230,230); myG.drawRect(200,280,50,30); } Linie zeichnen Rechteck zeichnen

Hier nochmals das Border-Layout kurz beschrieben:

Das Border-Layout besteht aus 5 Zonen, in denen jeweils eine Komponente eingefügt werden kann. Sollen z.B. mehrere Buttons in eine Zone eingefügt werden, fügt man diese zuerst in ein Panel ein und danach dieses Panel in die Zone! Nimmt man weniger als fünf Komponenten auf, so werden die nicht benutzten Zonen von den benutzten Zonen belegt. NORTH WEST EAST CENTER SOUTH

NORTH und SOUTH nehmen die volle Breite ein NORTH und SOUTH nehmen die volle Breite ein. Die Höhe hängt von der einzufügenden Komponente ab. WEST und EAST nehmen die Breite der einzufügenden Komponente an und belegen in der Höhe den restlichen freien Raum. Den Rest bekommt CENTER. NORTH WEST EAST CENTER SOUTH