Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Andreas Hermann Geändert vor über 7 Jahren
1
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 1 Erstellung von Benutzerschnittstellen in der Programmiersprache Java
2
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 2 Java Abstract Windowing Toolkit (AWT) Elemente der Benutzeroberfläche: Fenster, Menüs, Schaltfläche, Kontrollfelder, Textfelder, Bildlaufleisten und Listenfelder Container, die Elemente der Benutzeroberfläche und andere Container enthalten Handhabung von System- und Benutzerereignissen Mechanismen zum Anlegen von Komponenten, um eine plattformunabhängige Benutzeroberfläche zu entwickeln auf jeder Plattform das entsprechende native Gestaltungsmerkmal weniger Möglichkeiten zur Oberflächengestaltung, da auf jeder Plattform andere Oberflächenelemente zur Verfügung stehen keine Möglichkeiten das Gestaltungsmerkmal zu ändern
3
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 3 Die Bibliothek Swing komplett in Java implementiert => Oberflächen sehen auf allen Plattformen gleich aus fester Bestandteil des JDK 1.2 das Gestaltungsmerkmal kann zur Laufzeit geändert werden eigene Implementierungen des Gestaltungsmerkmals können benutzt werden größeres Widget-Set, z.B. Tooltips - Benutzerhinweise Erweiterungen mit JLabel, JButton, JCheckBox,... JTabbedPane, JSplitPane, JEditorPane, JTable Borders - verschiedene Rahmen weitere Layout-Manager
4
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 4 Container und Komponenten grafische Oberflächen bestehen aus Komponenten Einfache Komponenten Zusammengesetzte Komponenten (Container) einfache Komponenten des AWT Button, Canvas, Label, List, TextArea, TextField, CheckBox, CheckBoxGroup, Choice, Scrollbar, MenuBar und PopupMenu zusammengesetzte Komponenten des AWT (Container) Panel, ScrollPane, Window, Frame und Dialog Container können wiederum Container enthalten hierarchischer Aufbau der grafischen Oberflächen möglich Container als auch einfache Komponenten sind von der Klasse java.awt.Component abgeleitet
5
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 5 AWT-Klassenhierarchie Component CanvasContainerButton PanelWindowTextField AppletFrameDialog TextComponent
6
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 6 Methoden der Klasse Component getParent() - liefert den Container, in dem sich die Komponente befindet setForeground(Color) - setzt Vordergrundfarbe der Komponente setBackground(Color) - setzt Hintergrundfarbe der Komponente setSize(int, int) - Legt die Größe der Komponente fest getSize() - liefert die momentane Größe der Komponente paint(Graphics) - Zeichnet die Komponente setEnabled(boolean) - Selektierbar bzw. nicht selektierbar machen setFont() - Setzen des Schriftfonts hide() - Verbergen der Komponente show() - Zeigen der Komponente
7
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 7 Grundlagen Java-Applikationen benutzen als Container oft einen Frame Konstruktion eines Frames Frame myFrame = new Frame(´´A simple Frame´´); myFrame.setSize(300,200); Anzeigen eines Frames myFrame.show(); Entfernen eines Frames myFrame.dispose(); ein Applet ist von der Klasse Panel abgeleitet, deshalb ist es für Applets nicht notwendig einen Frame zu erzeugen Hinzufügen von Komponenten mit der Methode add() myFrame.add(new Button(´´I like Java´´));
8
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 8 Beispiel import java.applet.Applet; import java.awt.*; public class AddButtonDemo extends Applet { public void init(){ // Hinzufügen des Buttons add(new Button(´´I like Java´´)); }
9
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 9 Beispiel import java.applet.Applet import java.awt.* public class FrameApplikationDemo{ static Frame myFrame; static public void main(String argv[]){ // Erzeugen eines Frames myFrame = new Frame(´´ A simple Frame ´´); myFrame.setLayout( new FlowLayout)); myFrame.setSize( 300, 200 ); // Anzeigen des Frames myFrame.show(); myFrame.add( new Button(´´ I like Java ´´)); }
10
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 10 Button Button sind Schaltflächen, die durch Anklicken die bezeichnete Aktion ausführen Konstruktoren Button() erzeugt eine leere Schaltfläche ohne Beschriftung Button(String) erzeugt eine Schaltfläche mit der Beschriftung Button b = new Button(´´Cancel´´); Methoden String getLabel() - gibt den Wert für die Beschriftung des Buttons setLabel(String) - setzt neue Beschriftung des Buttons setEnabled(boolean) - Selektierbarkeit des Buttons
11
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 11 Label eine Komponente, die aus einem einzeiligen Text besteht Konstruktoren Label( String ) erzeugt ein Label mit der angegebenen Zeichenkette, die links ausgerichtet ist Label( String, int ) erzeugt einen Label mit der angegebenen Zeichenkette und Ausrichtung: Label.RIGHT, Label.LEFT, Label.CENTER Methoden String getText() - gibt die Zeichenkette für den Label-Text aus setText(String) - ändert den Label-Text int getAlignment() - gibt die Label-Ausrichtung als ganzzahligen Wert aus: 0 = Label.LEFT, 1 = Label.CENTER, 2 = Label.RIGHT setAlignment( int ) - ändert die Ausrichtung des Labels setFont(Font) - setzt den Font des Labels
12
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 12 Beispiel public class LabelDemo extends Applet { Label rightLabel, leftLabel; public void init(){ Font labelfont = new Font(´´SansSerif´´, Font.Plain, 25); leftLabel = new Label(´´Java´´, Label.LEFT); leftLabel.setFont(labelfont); rightLabel = new Label(´´avaJ´´); rightLabel.setAlignment(Label.RIGHT); rightLabel.setFont(labelfont); setLayout(new BorderLayout()); add(´´West´´, leftLabel); add(´´East´´, rightLabel); }
13
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 13 Listenfelder Listenfelder sind Listen mit mehreren Einträgen, aus denen eine oder mehrere ausgewählt werden können public class ListDemo extends Applet { List myList; public void init(){ // Initialisierung des Listenfeldes myList = new List( 3, false ); myList.add(´´Java´´); myList.add(´´Coffee´´); myList.add(´´Expresso´´); myList.add(´´Cappuccino´´); // Hinzufügen des Listenfeldes add(myList); }
14
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 14 Methoden der Klasse List getItem( int ) - gibt die Zeichenkette des Eintrags an der angegebenen Position aus countItems() - gibt die Anzahl der Einträge in der Liste aus getSelectedIndex() - gibt die Indexposition des ausgewählten Eintrags getSelectedIndexes() - gibt eine Reihe von Indexpositionen aus getSelectedItem() - gibt den momentan ausgewählten Eintrag als Zeichenkette aus getSelectedItems() - gibt eine Reihe von Zeichenketten aus, die ausgewählte Einträge enthalten select(int) - wählt den Eintrag an der bezeichneten Position aus select(String) - wählt den Eintrag mit dieser Zeichenkette aus
15
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 15 Auswahlmenüs Auswahlmenüs öffnen sich beim Anklicken und lassen dem Benutzer eine Auswahl aus mehreren Möglichkeiten treffen public class ChoiceDemo extends Applet { Choice myChoice; public void init(){ // Initialisierung des Listenfeldes myChoice = new Choice(); myChoice.add(´´Java´´); myChoice.add(´´Coffee´´); myChoice.add(´´Expresso´´); myChoice.add(´´Cappuccino´´); // Hinzufügen des Auswahlmenüs add(myChoice); }
16
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 16 Methoden der Klasse Choice addItem( String ) - fügt eine Option in das Menü ein getItem( int ) - gibt die Zeichenkette des Elements an der angegebenen Stelle aus countItem() - gibt die Anzahl der im Menü enthaltenen Elemente aus getSelectedItem() - gibt das momentan ausgewählte Element als Zeichenkette aus select( int ) - wählt das Element an der angegebenen Stelle select( String ) - wählt das Element mit der angegebenen Zeichenkette
17
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 17 Checkboxes Checkboxes sind Kontrollfelder, die ein- und ausgeschaltet werden können Konstruktoren Checkbox() erzeugt ein leeres Kontrollfeld Checkbox( String ) erzeugt ein Kontrollfeld mit der Beschriftung Checkbox( String, null, boolean ) erzeugt ein Kontrollfeld, das je nach dem booleschen Argument gewählt (true) oder nicht gewählt (false) ist Checkbox blau = new Checkbox(´´Blau´´); Checkbox rot = new Checkbox(´´Rot´´, null, true); Blau Rot
18
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 18 CheckboxGroups Mehrere Checkboxen können in einem Objekt CheckboxGroup zusammengefaßt werden In einer CheckboxGroup kann nur ein einziges Element ausgewählt werden (Radiobuttons) CheckboxGroup answer = new CheckboxGroup(); Checkbox yes = new Checkbox(´´Yes´´, answer, false); Checkbox no = new Checkbox(´´No´´, answer, true); Yes No
19
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 19 Methoden der Klasse Checkbox und CheckboxGroup Methoden der Klasse Checkbox getLabel() - gibt eine Zeichenkette für die Beschriftung aus getState() - gibt den booleschen Wert, ob das Kontrollfeld ausgewählt ist, aus setLabel( String ) - setzt neue Beschriftung für das Kontrollfeld setState( boolean ) - schaltet das Kontrollfeld ein (true) oder aus (false) getCheckboxGroup() - gibt die Gruppe einer Checkbox aus setCheckboxGroup(CheckboxGroup) - ändert die Gruppe einer Checkbox Methoden der Klasse CheckboxGroup getCurrent() - gibt momentan gewählte Checkbox aus setCurrent(Checkbox) - setzt momentan ausgewählte Checkbox
20
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 20 Beispiel public void init(){ // Initialisierung der CheckboxGroup-Komponenten myCheckboxGroup = new CheckboxGroup(); groupBox1 = new Checkbox(´´Java´´, myCheckboxGroup, true); groupBox2 = new Checkbox(´´Coffee´´, myCheckboxGroup, false); groupBox3 = new Checkbox(´´Expresso´´, myCheckboxGroup, false); // Initialisierung der normalen Checkboxen box1 = new Checkbox(´´Milk´´); box1.state = true; box2 = new Checkbox(´´Sugar´´); box2.state = true; box3 = new Checkbox(´´Cream´´); // Hinzufügen der Boxen add(groupBox1); add(groupBox2); add(groupBox3); add(box1); add(box2); add(box3); }
21
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 21 Textfelder ein Textfeld ist ein umrandeter Bereich, in dem Daten eingeben werden können Konstruktoren TextField() erzeugt ein leeres Textfeld, das 0 Zeichen breit ist TextField( int ) erzeugt ein leeres Textfeld mit einer bestimmten Anzahl an Zeichen TextField( String ), das die in der Zeichenkette anhaltene Anzahl an Zeichen breit ist und mit dieser initilialisiert wird TextField( String, int ) erzeugt ein Textfeld mit der angegebenen Breite in Zeichen und initialisiert es mit der Zeichenkette TextField hello = new TextField(´´Hello´´, 20); Hello
22
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 22 Methoden der Klasse TextField getText() - gibt den Text des Feldes als Zeichenkette aus setText(String) - setzt die angegebene Zeichenkette in das Feld getColumns() - gibt die Breite des Textfeldes aus select(int, int) - wählt den Text zwischen zwei Positionen aus selectAll() - wählt den gesamten Text im Feld aus isEditable() - Abfrage, ob der Text editierbar ist setEditable( boolean ) - setzt die Editierbarkeit des Textes getEchoChar() - gibt das Ersatzzeichen für das eingegebene Zeichen aus setEchoCharacter(char) - setzt das Ersatzzeichen für das eingegebene Zeichen echoCharIsSet() - Abfrage, ob das Feld ein Ersatzzeichen hat
23
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 23 Textbereiche Textbereiche können eine beliebige Breite und Höhe haben Standardmäßig haben sie auch Bildlaufleisten, so daß größere Textmengen untergebracht werden können Konstruktoren: TextArea() erzeugt einen leeren Textbereich mit einer Länge von 0 Zeilen und einer Breite von 0 Spalten TextArea(int, int) erzeugt einen Textbereich mit einer bestimmten Anzahl an Zeilen und Spalten (Zeichen) TextArea(String) erzeugt einen Textbereich, der die Zeichenkette anzeigt und 0 Zeilen mal 0 Spalten groß ist TextArea(String, int, int) erzeugt einen Textbereich mit einer bestimmten Anzahl an Zeilen und Spalten, der den bezeichneten Text anzeigt
24
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 24 Methoden der Klasse TextArea getColumns() - gibt die Breite des Textbereiches in Spalten aus getRows() - gibt die Länge des Textbereiches in Zeilen aus append( String ) - hängt den als Argument übergebenen Text hinten an den bestehenden Text an insert( String, int ) - fügt an der angebenen Position eine Zeichenkette in den Text ein replaceText( String, int, int ) - ersetzt den Text zwischen den angegebenen Positionen durch eine angegebene Zeichenkette
25
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 25 Beispiel public void init(){ // Erzeugen und Initialisierung der TextArea myTextArea = new TextArea( 10, 20 ); myTextArea.setEditable( false ); myTextArea.setText(´´Wanna dink some coffee´´); myTextArea.select( 17, 23 ); // Erzeugen des Textfeldes und setzen des Textes myTextField = new TextField (20); myTextField.setText(myTextArea.getSelectedText()); // Hinzufügen der Textkomponenten setLayout(new BorderLayout()); add(´´North´´, myTextField); add(´´Center´´, myTextArea); }
26
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 26 Die Containerklasse Panel Panel können zur Zusammenfassung logisch zusammenhängender Komponenten verwendet werden public void init(){ // Erzeugen des Panels buttonPanel = new Panel(); // Hinzufügen von Buttons zum Panel buttonPanel.add(new Button(´´clear´´)); buttonPanel.add(new Button(´´copy´´)); // Erzeugen der TextArea myTextArea = new TextArea(); // Hinzufügen der Komponenten zum Applet setLayout(new BorderLayout()); add(´´South´´, buttonPanel); add(´´Center´´, myTextArea); }
27
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 27 Die Containerklasse ScrollPane Ein ScrollPane definiert einen Container dessen Fläche gescrollt werden kann Einem ScrollPane kann genau eine Komponente hinzugefügt werden Art der Scrollbars kann im Konstruktor angegeben werden (SCROLLBARS_ALWAYS, SCROLLBARS_AS_NEEDED, SCROLLBARS_NEVER) ScrollPane sp; sp = new ScrollPane(ScrollPane.SCROLLBARS_NEVER) sp.add(new ImageComponent(img)); im Modus SCROLLBARS_NEVER wird das Scrollen vom Programm durchgeführt setScrollPosition(int x, int y) oder setScrollPosition(Point p)
28
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 28 Die Containerklasse Frame mit einem Frame kann für eine Applikation eine Benutzerober- fläche erzeugt werden ein Frame kann jedoch auch für Applets verwendet werden Frame´s können eine Menüleiste haben, die am oberen Rand plaziert wird setMenuBar(MenuBar); auf manchen Plattformen kann man Frames zu einem Icon verkleinern setIconImage(Image); Veränderbarkeit der Größe des Frames setReziable(boolean); Setzen des Cursors setCursor(Frame.HAND_CURSOR);
29
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 29 Menüleisten und Menüs Zur Erstellung eines Menüs werden die Klassen MenuBar, Menu und MenuItem verwendet Konstruktoren –MenuBar() - erstellt eine Menüleiste –Menu( String ) - erzeugt ein Menü –MenuItem( String ) - erzeugt eine Menüoption –CheckboxMenuItem( String ) - erzeugt eine Menüoption mit einem Kontrollfeld durch das die Option ein- und ausge- schaltet werden kann
30
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 30 Methoden zur Erstellung eines Menüs
31
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 31 Beispiel eines Menüs I public void init() { frame = new Frame("Frame with MenuBar"); frame.setSize(300, 200); // Erzeugen des File-Menüs fileMenu = new Menu("File"); fileMenu.add("open"); saveItem = new MenuItem("save"); saveItem.setEnabled(false); fileMenu.add(saveItem); fileMenu.add("save as"); autosave = CheckboxMenuItem("autosave"); autosave.setState(true); fileMenu.add(autosave); fileMenu.addSeparator(); MenuItem quit = new MenuItem("Quit", new MenuShortcut('q')); fileMenu.add(quit);
32
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 32 Beispiel eines Menüs II // Erzeugen des Options-Menüs optionMenu = new Menu("Options"); optionMenu.add("Environment"); // Erzeugen und Hinzufügen des Language-Menüs languageMenu = new Menu("Language"); languageMenu.add("german"); languageMenu.add("english"); languageMenu.add("french"); optionMenu.add(languageMenu); // Erzeugen der Menüleiste und Hinzufügen der Menüs myMenuBar = new MenuBar(); myMenuBar.add(fileMenu);myMenuBar.add(optionMenu); // Setzen der Menüleiste frame.setMenuBar(myMenuBar); }
33
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 33 Dialogfenster Dialogfenster verwendet man um Meldungen oder Warnungen auszugeben, oder um zu bestimmten Eingaben aufzufordern Dialogfenster sind Hilfsfenster, die modal sein können Konstruktoren Dialog( Frame, boolean ) erzeugt ein Dialogfenster, das mit dem übergebenen Fenster verbunden ist und modal ( true ) sein kann Dialog( Frame, String, boolean ) erzeugt ein Dialogfenster mit zusätzlicher Titelleiste Methoden String getTitle() - gibt eine Zeichenkette für die Titelleiste aus setTitle( String ) - setzt neue Titelleiste boolean isModal() - abfragen, ob Dialogfenster modal ist oder nicht
34
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 34 Beispiel Frame f = new Frame( ); : Dialog dialog = new Dialog( f, ´´Dialog´´, true ); Panel buttons = new Panel( ); Button ja = new Button( ´´Ja´´ ); Button nein = new Button( ´´Nein´´ ); buttons.add( ja ); buttons.add( nein ); dialog.add( ´´Center´´, new Label(´´Das Programm beenden?´´ )); dialog.add( ´´South´´, buttons ); dialog.pack( ); dialog.show( );
35
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 35 Die Klasse FileDialog bietet Dialogfenster zum Öffnen oder Speichern von Dateien in Applets können Objekte der Klasse FileDialog nicht verwendet werden Konstruktoren FileDialog( Frame, String ) erzeugt ein Dialogfenster zum Laden einer Datei in dem durch Frame bezeichnetem Fenster und mit dem durch String gegebenen Titel FileDialog(Frame,String, int) erzeugt ein Dialogfenster zum Laden oder Speichern einer Datei (FileDialog.LOAD, FileDialog.SAVE) Methoden String getDirectory() - gibt das ausgewählte Verzeichnis zurück String getFile() - gibt die ausgewählte Datei zurück
36
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 36 Layout-Manager Layout-Manager definieren Methoden zur Plazierung von Komponenten innerhalb eines Containers Sinn und Zweck der Layout-Manager keine absolute Positionierung automatische Ermittlung der Größe –getMinimumSize() –getPreferredSize() Anpassung der Größe kein zu stark variierendes Erscheinungsbild Standardmäßig eingestellte Layout-Manager Panel, Applet => FlowLayout Frame und Dialog => BorderLayout
37
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 37 Anwendung von Layout-Managern Erzeugung eines Exemplars des gewünschten Layout-Managers und Registrierung des Layout-Managers beim Container Frame frame = new Frame(); frame.setLayout(new FlowLayout()); Hinzufügen der Komponenten frame.add(new Button(´´Cancel´´)); Anordnung der Komponenten und Initialisierung der Komponentengrößen frame.pack(); Layout-Manager kann man auch selbst als Unterklasse der Klassen LayoutManager oder LayoutManager2 definieren
38
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 38 FlowLayout Komponenten werden von links nach rechts angeordnet passt eine Komponente nicht mehr in eine Zeile, wird sie automatisch auf die nächste Zeile umgebrochen ändert sich die Breite des Containers, paßt der FlowLayout- Manager die Darstellung entsprechend an Komponenten werden standardmäßig zentriert ausgerichtet FlowLayout.CENTER, FlowLayout.RIGHT bzw. FlowLayout.LEFT FrühlingSommerHerbstWinter Frühling SommerHerbst Winter
39
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 39 BorderLayout bei der Anordnung der Komponenten wird die geographische Richtung angegeben die Komponenten am Rand bekommen nur den benötigen Platz die Komponente in der Mitte bekommt den restlichen Platz BorderLayout bl = new BorderLayout(); setLayout(b1); add(´´North´´, new Label(´´Titel´´)); Center North West East South
40
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 40 GridLayout Container wird in Zeilen und Spalten aufgeteilt (alle Zellen sind gleich groß) Auffüllung mit Komponenten von links oben nach rechts unten sind zu wenig Zellen vorhanden, so werden Spalten angehangen GridLayout gl = new GridLayout(2,3); setLayout(gl); add(new Label(´´T1´´)); add(new Label(´´T2´´));... ;add(new Label(´´T5´´)); flexiblere Variante ist der GridBagLayout-Manager T1T2T3 T4 T5
41
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 41 CardLayout Komponenten eines Containers werden als Stapel von Karteikarten angesehen Methoden zum Blättern next() - zeigt die nächste Komponente previous() - zeigt die vorhergehende Komponente last() - zeigt die letzte Komponente first() - zeigt die erste Komponente show(String) - zeigt die Komponente mit entsprechendem Namen Panel imagePanel = new Panel(); layout = new CardLayout(); imagePanel.setLayout(layout); layout.next(imagePanel);
42
23.01.2006, Dr. Wolfram Amme, Softwareentwicklung in Java, FSU Jena, WS 2005/06 42 Positionierung ohne Layout-Manager public class AbsPosDemo extends Applet { int row = 10; Insets insets = new Insets(5, 5, 0, 0); public void insert (Component c) { add(c); Dimension d = new Dimension(c.getPreferredSize()); c.reshape(insets.left, row, d.width, d.height); row += insets.top+d.height; } public void init() { setLayout(null); insert(new Button("Java")); insert(new Checkbox("Zucker")); insert(new Checkbox("Milch")); }
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.