DVG2 - 091 A bstract W indow T oolkit. DVG2 - 092 4 Als standardisierte portable Grafikschnittstelle...

Post on 05-Apr-2015

106 views 0 download

Tags:

Transcript of DVG2 - 091 A bstract W indow T oolkit. DVG2 - 092 4 Als standardisierte portable Grafikschnittstelle...

DVG2 - 09 1

Abstract Window Toolkit

DVG2 - 09 2

Als standardisierte portable Grafikschnittstelle existiert in JAVA das Package „AWT“ - „Abstract Window Toolkit“.

AWT enthält Klassen zur Programmierung allgemeiner Grafikelemente, z.B.:– Fenster– Menüs, Buttons– Druckeranschluß– Drag and Drop– Mausanschluß– Grafikimport, -export– Farben– Fonts– Geometrieobjekte

DVG2 - 09 3

Component-Klassen

Component

Button Canvas Checkbox Choice

Container

Label List Scrollbar

TextComponent

Panel ScrollPane Window TextArea TextField

Applet FrameDialog

FileDialog

DVG2 - 09 4

Die Klasse Component

Eine Component ist ein Objekt, das eine graphische Darstellung besitzt, das auf dem Bildschirm angezeigt werden kann und das mit dem Nutzer interagieren kann. Z.B.:– Buttons– Checkboxen– Scrollbars u.s.w.

Objekte der Klasse Component werden kaum direkt verwendet, sondern nur als Instanziierungen abgeleiteter Klassen.

Die Methoden und Attribute werden an alle abgeleiteten Klassen vererbt.

DVG2 - 09 5

Wichtige Methoden von Component

public Color getBackground()bestimmt die Hintergrundfarbe

public void setBackground (Color c)setzt die Hintergrundfarbe

public Color getForeground()bestimmt die Vordergrundfarbe

public void setForeground (Color c)setzt die Vordergrundfarbe

public Font getFont()bestimmt den aktuellen Font

public void setFont (Font f)setzt den aktuellen Font

DVG2 - 09 6

Die Klasse Color Beschreibt Farben in verschiedenen Farbmodellen Konstruktoren

– Color (float r, float g, float b)0.0 <= r, g, b <= 1.0

– Color (int r, int g, int b)0 <= r, g, b <= 255

Attributestatic Color black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red,white, yellow

Methoden– int getR(), int getG(), int getB()

bestimmt die Farbanteile– Color brighter(), Color darker()

erzeugt eine etwas hellere bzw. dunklere Farbe

DVG2 - 09 7

Die Klasse Font

Beschreibt Schriftarten und -eigenschaften Konstruktor

Font (String name, int style, int size)– name : "Dialog", "DialogInput", "Monospaced", "Serif", "SansSerif", "Symbol"

– style : PLAIN, BOLD, ITALIC, BOLD|ITALIC– size : Schriftgröße

DVG2 - 09 8

Die Klasse Container

Beschreibt AWT-Objekte, die andere Objekte enthalten können. Wird wie Component selten direkt benutzt. Definiert Methoden zum Verwalten von in dem Container

enthaltenen anderen AWT-Objekten.– public Component add (Component comp)– public void remove(Component comp)– public int getComponentCount()– public Component [] getComponents()– public Component getComponentAt (int x, int y)

Methoden zum Verwalten des Layouts– public void setLayout (LayoutManager mgr)– public LayoutManager getLayout()– public Insets getInsets()

DVG2 - 09 9

Methoden zum „Zeichnen“ des Inhaltes– public void paint (Graphics g) – public void update (Graphics g)

DVG2 - 09 10

Interface LayoutManager

Beschreibt das Layout eines Containers Implementierungen sind

– GridLayout– FlowLayout– CardLayout– GridbagLayout– BorderLayout

DVG2 - 09 11

Die Klasse Insets

Beschreibt die Breiten der Ränder eines Containers. Konstruktor

Insets(int top, int left, int bottom, int right) Attribute

public int toppublic int leftpublic int bottompublic int right

DVG2 - 09 12

Methoden der Klasse Graphics public void drawString(String str, int ix, int iy)

– zeichnet den Text str an die Position (ix,iy) public void drawLine(int ix1, int iy1, int ix2,

int iy2)– zeichnet eine Linie von (ix1,iy1) nach (ix2,iy2)

public void drawRect(int ix, int iy, int ib, int ih)– zeichnet ein Rechteck mit der linken oberen Ecke (ix,iy) und

der Breite ib und der Höhe ih public void fillRect(int ix, int iy, int ib, int

ih)– zeichnet ein ausgefülltes Rechteck

DVG2 - 09 13

public void drawOval(int ix, int iy, int ib, int ih)– zeichnet ein Oval innerhalb des beschriebenen Rechtecks

public void fillOval(int ix, int iy, int ib, int ih)– zeichnet ein ausgefülltes Oval

public void drawArc(int ix, int iy, int ib, int ih, int start, int arc)– zeichnet einen Auschnitt eines Ovals innerhalb des

beschriebenen Rechtecks mit dem Startwinkel start und dem Öffnungswinkel arc

public void fillArc(int ix, int iy, int ib, int ih, int start, int arc)– zeichnet einen ausgefüllten Auschnitt eines Ovals

DVG2 - 09 14

public void drawPolygon(int[] ix, int[] iy, int n)– zeichnet ein geschlossenes Polygon mit den Ecken (ix[i],iy[i]) für i=0...n-1

public void fillPolygon(int[] ix, int[] iy, int n)– zeichnet ein geschlossenes ausgefülltes Polygon

public void drawPolyline(int[] ix, int[] iy, int n)– zeichnet einen Polygonzug mit den Ecken (ix[i],iy[i])

für i=0...n-1

DVG2 - 09 15

Die Klasse Window Window-Objekte Windows auf der obersten Hirarchie-Stufe. Windows enthalten keinen Rand und kein Menü. Windows werden üblicherweise nicht selbständig erzeugt. Methoden

– public void dispose()löschen des Windows und aller Subkomponenten

– public void pack()verkleinert das Window derartig, daß alle Komponenten hineinpassen

– public void show()macht das Window sichtbar

– public void toBack()legt das Window nach hinten

– public void toFront()legt das Window nach vorn

DVG2 - 09 16

Die Klasse Frame

Frame ist ein komplettes Fenster mit Titel und Rand. Konstruktoren

– Frame()erzeugt Frame ohne Titel

– Frame (String title)erzeugt Frame mit Titel

Methoden– public void setMenuBar(MenuBar mb)

definiert einen Menübalken am Kopf des Frames– public void setResizable(boolean resizable)

bestimmt, ob das Frame in der Größe verändert werden kann

DVG2 - 09 17

Die Klasse Label Erzeugt ein Label mit oder ohne Text. Konstruktoren

– Label()erzeugt Label ohne Text

– Label(String text)erzeugt Label mit Text

– Label(String text, int alignment)erzeugt Label mit Text und legt die Ausrichtung des Textes fest.alignment = Label.LEFT, Label.RIGHT, Label.CENTER

Methoden– public String getText()– public void setText(String text)

DVG2 - 09 18

Die Klasse Button

Erzeugt eine Schaltfläche.Organisiert die Reaktion auf Betätigung der Schaltfläche.

Konstruktoren– Button()

erzeugt Schaltfläche ohne Beschriftung– Button(String label)

erzeugt Schaltfläche mit Beschriftung Methoden

– public String getLabel()– public void setLabel(String label)– public String getActionCommand()– public void setActionCommand (String command)

lesen bzw. setzen das Kommando, das beim Betätigen der Schaltfläche an den ActionListener gesendet wird

DVG2 - 09 19

public void addActionListener(ActionListener l)Hinzufügen eines ActionListeners

public void removeActionListener(ActionListener l)Löschen eines ActionListeners

DVG2 - 09 20

Beispiel

import java.awt.*;

public class t{

public static void main (String [] args){

tFrame f = new tFrame("AWT mit Buttons"); f.setBounds(200,100,400,300); f.setBackground(Color.yellow); f.show();}

}

DVG2 - 09 21

import java.awt.*;

public class tFrame extends Frame{

tFrame(String title){ super(title); setLayout(new GridLayout(2,1)); Button b1 = new Button(); b1.setBackground(Color.cyan); add (b1); Button b2 = new Button("Button"); b2.setBackground(Color.blue); add (b2);}

}

DVG2 - 09 22

Das Interface ActionListener

Implementierungen dieses Interfaces, dienen der Behandlung von ActionEvents. Diese werden ausgelöst, wenn:– ein MenuItem ausgewählt wird,– ein Button betätigt wird– in einem TextField Return gedrückt wird– ein Feld in einer List ausgewählt wird

Es muß eine Methode implementiert werden:– public void actionPerformed(ActionEvent e)

diese Methode wird aufgerufen, wenn oben genannte Ereignisse eintreten

DVG2 - 09 23

Die Klasse ActionEvent Wird ausgelöst von

– MenuItem– Button– TextField– List

Methoden– public String paramString()

liefert eine Zeichenkette, die die wesentlichen Informationen über das eingetretene Ereignis enthält

– public String getActionCommand()liefert die Zeichenkette, die standardmäßig oder mit setActionCommand(String command) als Kommandozeichenkette gesetzt wurde.

DVG2 - 09 24

– public int getModifiers()gibt die Tastencodes der gedrückten Modifizierer aus :

• SHIFT_MASK• CTRL_MASK• META_MASK• ALT_MASK

DVG2 - 09 25

Beispiel

import java.awt.event.*;

public class tAL implements ActionListener{

public void actionPerformed(ActionEvent e){ System.out.println( "e.getActionCommand() = "+e.getActionCommand()); System.out.println( "e.getModifiers() = "+e.getModifiers()); System.out.println( "e.paramString() = "+e.paramString());}

}

DVG2 - 09 26

import java.awt.*;import java.awt.event.*;

public class tFrame extends Frame{

tFrame(String title){... ActionListener al = new tAL(); b1.setActionCommand( "unbeschriftete Schaltflaeche"); b1.addActionListener(al); b2.addActionListener(al);}

}

DVG2 - 09 27

Alles zusammen

import java.awt.*;import java.awt.event.*;

public class tAlles extends Frame implements ActionListener{

public static void main (String [] args){

Frame f = new tAlles("AWT mit Buttons"); f.setBounds(200,100,400,300); f.setBackground(Color.yellow); f.show();}

DVG2 - 09 28

Alles zusammen

tAlles(String title){ super(title); setLayout(new GridLayout(2,1)); Button b1 = new Button(); b1.setBackground(Color.cyan); add (b1); Button b2 = new Button("Button"); b2.setBackground(Color.blue); add (b2);

b1.setActionCommand( "unbeschriftete Schaltflaeche"); b1.addActionListener(this); b2.addActionListener(this);}

DVG2 - 09 29

Alles zusammen

public void actionPerformed(ActionEvent e){ System.out.println( "e.getActionCommand() = "+e.getActionCommand()); System.out.println( "e.getModifiers() = "+e.getModifiers()); System.out.println( "e.paramString() = "+e.paramString());}

}

DVG2 - 09 30

Die Klasse Canvas

Die Klasse Canvas beschreibt leere Bereiche des Fensters, in denen graphische Objekte (Linien, Rechtecke, Ellipsen u.s.w.) plaziert werden können.

KonstruktorCanvas()erzeugt ein neues Canvas

Methodenpublic void paint(Graphics g)zeichnet die Graphiken des Canvas neu

DVG2 - 09 31

Beispiel

public class tFrame extends Frame

{

tFrame(String title)

{

super(title);

setLayout(new GridLayout(2,1));

Canvas c = new tCanvas();

c.setBackground(Color.cyan);

add (c);

Button b = new Button("Button");

b.setBackground(Color.blue);

add (b);

}

}

DVG2 - 09 32

import java.awt.*;

public class tCanvas extends Canvas

{

public void paint(Graphics g)

{

g.drawLine(10,70,90,20);

g.drawString("Das ist ein Text",100,50);

g.drawString("g.drawLine(10,70,90,20)",300,50);

g.drawString(

"g.drawString(\"Das ist ein Text\",100,50)",300,70);

...

}

}

DVG2 - 09 33

Die Klasse Checkbox

Erzeugt Auswahlknöpfe Konstruktoren

– Checkbox()Knopf ohne Beschriftung

– Checkbox(String label)Knopf mit Beschriftung

– Checkbox(String label, boolean state)Knopf mit Beschriftung mit angegebenen Status: state==true heißt Knopf ist gedrückt

– Checkbox(String label, boolean state, CheckboxGroup group)Knopf mit Beschriftung mit angegebenen Status, sowie Einsortierung in eine Checkbox-Gruppe

DVG2 - 09 34

Methoden– public String getLabel()– public void setLabel(String label)– public boolean getState()– public void setState (boolean state)– public CheckboxGroup getCheckboxGroup()– public void setCheckboxGroup (CheckboxGroup group)

– public void addItemListener(ItemListener l)fügt einen ItemListener hinzu

– public void removeItemListener(ItemListener l)löscht einen ItemListener

DVG2 - 09 35

Die Klasse CheckboxGroup

Dient der Gruppierung von Checkboxen zu „Radiobuttons“. Konstruktor

CheckboxGroup() Methoden

– public Checkbox getSelectedCheckbox()– public void setSelectedCheckbox(Checkbox box)

DVG2 - 09 36

BeispieltFrame(String title){ super(title); setLayout(new GridLayout(2,3)); Checkbox cb11 = new Checkbox("cb11",true); add (cb11); Checkbox cb12 = new Checkbox("cb12"); add (cb12); Checkbox cb13 = new Checkbox("cb13",true); add (cb13); CheckboxGroup cbg = new CheckboxGroup(); Checkbox cb21 = new Checkbox("cb21",true,cbg); add (cb21); Checkbox cb22 = new Checkbox("cb22",false,cbg); add (cb22); Checkbox cb23 = new Checkbox("cb23",false,cbg); add (cb23);}

DVG2 - 09 37

Das Interface ItemListener

Implementierungen von ItemListener dienen der Behandlung von ItemEvents. Diese werden erzeugt von:– Checkbox– Choice– CheckboxMenuItem– List– ItemSelectable

Es muß eine Methode implementiert werden:public void itemStateChanged(ItemEvent e)

DVG2 - 09 38

Die Klasse ItemEvent

Methoden– public Object getItem()

gibt das Object aus, das dieses Ereignis ausgelöst hat– public int getStateChange()

gibt den neuen Status des Objectes aus: SELECTED oder DESELECTED

– public String paramString()liefert eine Zeichenkette, die die wesentlichen Informationen über das eingetretene Ereignis enthält

DVG2 - 09 39

Beispiel

tFrame(String title)

{

super(title);

setLayout(new GridLayout(2,3));

...

ItemListener il = new tIL();

cb11.addItemListener(il);

cb12.addItemListener(il);

cb13.addItemListener(il);

cb21.addItemListener(il);

cb22.addItemListener(il);

cb23.addItemListener(il);

}

DVG2 - 09 40

MenuComponent-Klassen

MenuComponent

MenuItem MenuBar

CheckboxMenuItem Menu

PopupMenu