Layout Manager. Astrid Beck FHT Esslingen

Ähnliche Dokumente
Programmieren II. Die Klasse JList. Vorlesung 5. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester JList.

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Fachhochschule Fulda Fachbereich Angewandte Informatik. Hausarbeit Seminar: Java3D. Java Layout-Manager WS 2002/2003

Objektorientierte Software-Entwicklung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

jcontentpane.setlayout(new BorderLayout()); // unten JPanel unten = new JPanel(); unten.setlayout( new BoxLayout(unten, BoxLayout.

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Grundlagen der Informatik für Ingenieure I. 8. AWT - Abstract Window Toolkit Teil 1

GUI Programmierung mit javax.swing

GUI Programmierung mit JAVA Swing

Ein Manager mit CardLayout layout/cards.java

Graphische Benutzungsoberflächen

7. Architektur interaktiver Systeme

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

...erinnern Sie sich? oopjs4b / kwhbkd4r

Einführung in Swing. Graphical User Interface

Grafische Benutzeroberflächen mit Swing

Session 1: Classes and Applets

13 Grafische Oberflächen , Prof. Dr. D. Ratz

Programmieren 2 Selbststudium Semesterwoche 4

GUIs in Java und ihre Programmierung

Medientechnik. Übung 2 Java Swing

Einstieg in die Informatik mit Java

Auszug aus der Klassenstruktur

Grafische Benutzeroberflächen

Entwicklung von E-Learning Komponenten zur Computergrafik

GUI-Programmierung - Einführung

Universität Paderborn Prof. Dr. Stefan Böttcher. Kapitel 3: Java Applets

LayoutManager. Einsatz von LayoutManagern in AWT/Swing Containern. Prof. Dr. Nikolaus Wulff

Einstieg in die Informatik mit Java

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr Seite 1 von 5. Teil 2: Aufgaben

5. Das Java AWT (II) Components und Container

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Objektorientierte Programmierung

Aufgabe 1: Objekte, Klassen, Vererbung (15 Punkte)

Techniken der Projektentwicklung

Swing :Komponenten I (Teil 2)

JAVA Oberflächen mit Swing

Programmieren in Java

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

public class Beispiel1 extends Frame {

Vorlesung 13. Sitzung Grundlegende Programmiertechniken

Mensch-Maschine-Interaktion

J.1. J.1 GUI-Programmierung in in Java Prof. Dr. Rainer Manthey Informatik II 1

Java - Programmierung - Applets 1

$ java awt.main A # typische Dekodierung $ java -Dtrace=all awt.main A # alle Events $ java -Dtrace=none awt.main A # keine Dekodierung

Softwarepraktikum: Enigma

Interaktive Elemente, GUI-Programmierung

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Grafische Benutzeroberflächen

JAVA Oberflächen mit Swing

NTB Druckdatum:

GUI-Programmierung - Einführung

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

Applets Belebung von Webseiten. Dipl.-Ing. Wolfgang Beer

Vorlesung Programmieren. Bisher... Apple Lisa Office System 3.1. GUIs mit Java

Vorlesung Programmieren

Einführung in Java, Teil 6

Grundlagen der Programmierung APPLETS

Java Beans.

Graphische Programmierung: GUIs: graphical user interfaces

Java GUI und Applet Grundlagen

Swing Lernen am Code Teil 1

GUI Programmierung in Java

import java.awt.*; import java.awt.event.*; import javax.swing.*;

Grundlagen der Informatik für Ingenieure I

25 Object Serialization

Institut für Informatik

Programmierkurs. 11. Vorlesung. Sven Mallach. 13. Januar Institut für Informatik - Lehrstuhl Prof. Dr. M. Jünger 1/ 60

Objektorientierte Programmierung OOP Objektorientierte Programmierung (OOP) mit Java

DHBW Karlsruhe, Angewandte Informatik Programmieren in JAVA W. Geiger, T. Schlachter, C. Schmitt, W.

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

Einstieg in die Informatik mit Java

5. Java Swing Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006

Seite Architektur interaktiver Systeme. 7. Architektur interaktiver Systeme. 7.1 Entkopplung durch Sichten. Schichtenarchitektur

Udo Matthias Munz. Datenbanken und SQL. mit. Einführung. Informationstechnik

Eingabe von Texten. Vorlesung Software-Entwicklung / Folie 101

import java.applet.applet; import java.awt.*; class WaitAux extends Thread { private Graphics gbuff; private Image buffer; private WaitingThread app;

GUI-Programmierung in Java

1. Grundlegende Konzepte in Java (6 Punkte)

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

Was passiert, wenn Button "Ok?" mit Maus angeklickt?

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Theorie zu Übung 8 Implementierung in Java

Grafik - wozu? GUI Grafische Benutzungsschnittstellen. Gehört zum Standardumfang des JDK. 2 Varianten: AWT und Swing

7.1 Übersicht Geschichte von swing

JUnit. Unit testing unter Java

Klausur vom 14. Juni Informatik 4

JTable. W. Lang HWR Berlin, SS

04 - Actions. Actions

Aufbau einer typischen Java-Datei

2. Programmierung von Benutzungsschnittstellen

Java Projekt: Tic Tac Toe + GUI

Benutzeroberflächen. Java Teil 4

Vorlesung Informatik II

Transkript:

Layout Manager Astrid Beck FHT Esslingen Layout Manager Layout Manager arrangieren den Inhalt eines Containers gemäß vorgegebener Regeln Layout Manager BorderLayout North, South, East, West, Center FlowLayout jedes Element zur Rechten des vorhergehenden, wrap GridLayout Reihen und Spalten von gleicher Größe BoxLayout Komponenten in einer Reihe oder in einer Spalte, mit Strut und Glue für Abstände GridBagLayout Reihen und Spalten, flexibel und komplex CardLayout Panels können überlappen; different components at different times OverlayLayout übereinanderliegende Ebenen ScrollPaneLayout mit viewport, 2 scrollbars, row header, column header, 4 "corner" components SpringLayout flexibel, kann alle anderen emulieren, für GUI Builder ViewportLayout bestimmen eines Default Layout, mit Minimum Size Null-Layout alle Maße werden explizit definiert; ist zu vermeiden! 2 1

Layout Manager Container haben einen Default Layout Manager Panel & Applet -> FlowLayout Window, Frame, & Dialog -> BorderLayout Der Layout Manager eines Containers kann geändert werden mit der setlayout (LayoutManager) -Methode Layout manager sind Objekte der Klasse, die das LayoutManager interface implementiert: Beispiel public class GridLayout implements LayoutManager Panel pnl = new Panel(); pnl.setlayout (new GridLayout (0, 4)); // 4 Spalten 3 BorderLayout Definiert 5 Bereiche: North, South, East, West, Center Diese müssen nicht alle belegt sein Nur eine Komponente in jedem Bereich (kann ein Container sein) Resize der Komponenten ist möglich: NORTH und SOUTH werden horizontal gedehnt EAST und WEST werden vertikal gedehnt CENTER wird in alle Richtungen gedehnt, um verbleibenden Platz auszufüllen Default Layout Manager für Window, Frame, Dialog Add kann auf zwei Arten aufgerufen werden: add (String, Component) String ist North, South, East, West, Center add (Component, BorderLayout.location) location ist NORTH, SOUTH, EAST, WEST, CENTER (=default, kann weggelassen werden) 4 2

BorderLayout North West Center East South 5 BorderLayout import java.awt.*; import java.awt.event.*; public class BorderExample extends Frame { public BorderExample () { Frame f = new Frame ("Layout Manager Test"); // Frame's Default Layout Manager ist BorderLayout Label toplbl = new Label ("Beispiel BorderLayout", Label.CENTER); f.add ("North", toplbl); Label westlbl = new Label ("Bitte Text eingeben", Label.LEFT); f.add ("West", westlbl); f.add ("Center", new TextArea (10, 80)); f.add ("South", new Button ("Save")); f.pack(); //Causes this Window to be sized f.setvisible (true); } } 6 3

Übung: bitte zeichnen 7 public class BorderTest { public static void main (String[] args) { new BorderExample(); } } BorderLayout 8 4

BorderLayout - Swing 9 FlowLayout Addiert Komponenten von links nach rechts, bricht ggf. um Layout wird neu angeordnet bei Fenstergrößenänderung Die Größe der Komponenten wird nicht verändert Ausrichtung kann spezifiziert werden Abstand zwischen Komponenten kann spezifiziert werden FlowLayout (int align, int hgap, int vgap) optional: align = Ausrichtung hgap, vgap = horizontale und vertikale Abstände 10 5

FlowLayout 11 GridLayout Komponenten werden in einem Grid (Raster) angeordnet Komponenten erhalten die Maße des größten Objekts Reihen und Spalten können spezifiziert werden Wenn nur eins definiert wird, werden die anderen entsprechend verteilt Wenn nur Beides definiert wird, wird die Angabe der Spalten ignoriert Beispiel: new GridLayout (2, 4) // 2 rows,? columns new GridLayout (0, 4) // 4 columns new GridLayout (2, 0) // 2 rows Abstand zwischen Komponenten kann spezifiziert werden 12 6

GridLayout 13 GridLayout import java.awt.*; public class GridTest1 extends Frame { public GridTest1() { Frame f = new Frame ("GridLayout1"); f.setlayout (new GridLayout (0, 2, 0, 5)); f.add (new Label ("Name, Vorname", Label.LEFT)); f.add (new TextField (20)); f.add (new Label("Strasse", Label.LEFT)); f.add (new TextField (20)); f.add (new Label ("Land", Label.LEFT)); f.add (new TextField (20)); f.add (new Label("PLZ / Ort", Label.LEFT)); f.add (new TextField (20)); f.pack(); f.setvisible (true); } } 14 7

Übung: bitte zeichnen 15 GridLayout 16 8

Schachteln von Containern Komplexere Anordnungen von Komponenten kann durch Schachtelung verschiedener Layout Manager erreicht werden Beispielsweise kann ein Frame ein BorderLayout haben; die North-, Center- und South-Positionen können mehrere Komponenten mit verschiedenen Layout Managern beinhalten 17 Schachteln von Containern 1 public class NestingTest extends Frame { public NestingTest () { // Erzeugen eines Fensters Frame f = new Frame ("NestingTest"); // north Label toplbl = new Label ("Geschachtelte Layout Manager", Label.CENTER); f.add (BorderLayout.NORTH, toplbl); 18 9

Schachteln von Containern 2 // 2 GridLayout-Panels Panel centerpnl = new Panel(); Panel centerpn2 = new Panel(); centerpnl.setlayout (new GridLayout (4, 1, 0, 5)); centerpn2.setlayout (new GridLayout (4, 1, 0, 5)); centerpnl.add (new Label ("Name, Vorname", Label.LEFT)); centerpn2.add (new TextField (40)); centerpnl.add (new Label ("Strasse", Label.LEFT)); centerpn2.add (new TextField (40)); centerpnl.add (new Label ("Land", Label.LEFT)); centerpn2.add (new TextField (40)); centerpnl.add (new Label ("PLZ / Ort", Label.LEFT)); centerpn2.add (new TextField (40)); 19 Schachteln von Containern 3 // f-north with own panel Panel northp = new Panel(); northp.setlayout (new BorderLayout()); northp.add (centerpnl, BorderLayout.WEST); northp.add (centerpn2, BorderLayout.CENTER); f.add(northp, BorderLayout.NORTH); 20 10

Schachteln von Containern 4 // south Panel southpnl = new Panel(); southpnl.setlayout (new FlowLayout(FlowLayout.RIGHT)); southpnl.add (new Button ("Speichern")); southpnl.add (new Button ("Abbrechen")); f.add (BorderLayout.SOUTH, southpnl); f.pack(); f.setvisible (true); 21 Schachteln von Containern 22 11

Übung - Excersise TextArea (10, 80) placed in CENTER changes its size develop the code in such a way that TextArea (10, 80) should always keep its size (no resize) Use BorderLayout only 23 24 12

BoxLayout In einer horizontalen Box sind Komponenten horizontal, von links nach rechts angeordnet In einer vertikalen Box sind Komponenten vertikal, von oben nach unten angeordnet Horizontal oder Vertikal hat nichts mit der Form der Box zu tun 25 BoxLayout BoxLayout ist das Default Layout für einen Box container. s. Beispiel: Box box1 = Box.createHorizontalBox(); box1. add (...); // add a spacer, 60 pixels: box1.add(box.createhorizontalstrut (60); Box box2 = Box.createVerticalBox();... 26 13

BoxLayout Container c = getcontentpane(); c.setlayout(new FlowLayout() ); Box box = Box.createVerticalBox(); box.add (new JButton ("Next Slide")); box.add (new JButton ("Previous Slide")); box.add (Box.createVerticalStrut (20) ); box.add (new JButton ("Exit")); c.add (box); 27 GridBagLayout Ermöglicht die flexible Anordnung von Gestaltungselementen Statt Schachtelung von Layout Managern Steuerung der Anordnung mittels GridBagConstraints-Objekt mit folgenden Attributen: public int gridx = GridBagConstraints.RELATIVE; public int gridy = GridBagConstraints.RELATIVE; public int gridwidth = 1; public int gridheight = 1; public double weightx = 0.0; public double weighty = 0.0; public int anchor = GridBagConstraints.CENTER; public int fill = GridBagConstraints.NONE; public Insets insets = new Insets( 0, 0, 0, 0 ); public int ipadx = 0; public int ipady = 0; s. http://java.sun.com/docs/books/tutorial/uiswing/layout/gridbag.html sowie P.Vorobiev, M.Robinson: Swing, S. 116ff. 28 14

GridBagLayout 29 GridBagLayout 30 15

GridBagLayout Windows L&F 31 Look & Feel try { // System L&F UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName()); // Metal (eins von beiden) UIManager.setLookAndFeel ("javax.swing.plaf.metal.metallookandfeel"); UIManager.setLookAndFeel (UIManager.getCrossPlatformLookAndFeelClassName()); // läuft nur für das entsprechende System UIManager.setLookAndFeel ("com.sun.java.swing.plaf.windows.windowslookandfeel"); UIManager.setLookAndFeel ("javax.swing.plaf.mac.maclookandfeel"); } catch(exception e) { System.out.println("Error setting LAF: " + e); } 32 16

LowVisionMetalLookAndFeel 33 Literatur A Visual Guide to Layout Managers http://java.sun.com/docs/books/tutorial/uiswing/layout/index.html P.Vorobiev, M.Robinson: Swing, S. 116ff Applying Java Layout Managers to Graphical User Interfaces, Part 1,2 http://www.interex.org/pubcontent/enterprise/may00/13chew.html http://www.interex.org/pubcontent/enterprise/jul00/08chew.html http://www.galileocomputing.de/openbook/javainsel3/javainsel_150018. htm#rxxjavainsel_150018256allesauslegungssachedielayoutmanager Understanding Layouts in SWT http://eclipse.org/articles/understanding%20layouts/understanding%20 Layouts.htm LowVisionMetalLookAndFeel http://www.sun.com/access/developers/developing-accessibleapps/appendix.html 34 17

35 Klausuraufgabe 36 18