22
Universität zu Lübeck Institut für Informationssysteme Die Präsentationsschicht - mit Swing

Die Präsentationsschicht

  • Upload
    kele

  • View
    20

  • Download
    3

Embed Size (px)

DESCRIPTION

Die Präsentationsschicht. - mit Swing. Präsentationsschicht - Verantwortlichkeiten. realisiert Benutzeroberfläche grafisch sorgt für die Dialogkontrolle Folge von Fenstern zur Durchführung eines Arbeitsablaufes. Präsentation von Daten. Meldungsfenster, Eingabedialoge, … - PowerPoint PPT Presentation

Citation preview

Page 1: Die Präsentationsschicht

Universität zu LübeckInstitut für Informationssysteme

Die Präsentationsschicht

- mit Swing

Page 2: Die Präsentationsschicht

Präsentationsschicht - Verantwortlichkeiten

• realisiert Benutzeroberfläche grafisch

• sorgt für die Dialogkontrolle

Folge von Fenstern zur Durchführung eines

Arbeitsablaufes

Page 3: Die Präsentationsschicht

Präsentation von Daten

• Meldungsfenster, Eingabedialoge, …

• Darstellungskomponenten: Textfelder, Listboxen, Radiobuttons, Tabellen, Label, …

• Editieren von Objektdaten -> Plausibilisierung

Page 4: Die Präsentationsschicht

Dialogkontrolle

• Kontrollfluss in der Benutzerschnittstelle

• Benutzerereignisse werden behandelt

• Wichtig! -> keine Dialogabfolge in Fenstern

• in Swing: Event-Listener

Page 5: Die Präsentationsschicht

Ereignisbehandlung mit Event Listenern

• in Swing Objekte spezieller Klassen

• müssen bei Darstellungkomponenten registriert werden

• tritt das Ereignis ein, werden Methoden der Event Listener aufgerufen

• für unterschiedliche Ereignisse(Tastatur-, Mausereignisse), unterschiedliche Methoden

Page 6: Die Präsentationsschicht

EreignisbehandlungBsp.

Dialog

Bitte Namen eingeben:

Name:

ok

KeyListener TextfeldListener

keyPressed(KeyEvent) : void

ActionListener ButtonListener

actionPerformed(ActionEvent)

1 …2 mTextfeld.addKeyListener(new TextfeldListener(){3 public void keyPressed(KeyEvent e){4 textfeld_keyPressed(e);5 }6 });7 btn.addActionListener(new ActionListener(){8 public void actionPerformed(ActionEvent e){9 btn_actionPerformed(e);10 }11 });12 private void textfeld_keyPressed(KeyEvent e){13 if(e.getKeyChar()==‘?‘)…14 }…

Page 7: Die Präsentationsschicht

DialogkontrolleBsp. Ablauf

Anwendungsschicht-Schnittstelle(Fassade)

SuchoptionenBegriff: Buch

ok cancel

Suchergebnis

GUI-Controller

constructor(ergebnis){ this.ergebnis = ergebnis; fillWindow();}

ok

void doSearch(String suchStr){ ergebnis = fassade.find(suchStr); //Suchergebnis in einem neuen Fenster anzeigen}…

ListeneractionPerformed

ergebnis

Präsentationsschicht

Page 8: Die Präsentationsschicht

Action-Konzept in Swing

• bietet Möglichkeit, eine in der GUI benutzte Funktionalität mit ihren erweiterten Eigenschaften in einer Java-Klasse zusammenzufassen

• viele Swing-Komponenten(z.B. JButton) besitzen Action-Member-Variable

• Funktionalität einer Action-Klasse kann in mehreren Menüs, Fenstern genutzt werden

Page 9: Die Präsentationsschicht

Action - Interface

public interface Action extends ActionListener{

public void actionPerformed(ActionEvent e);

public Object getValue(String key);

public void putValue(String key, Object value);

}

Page 10: Die Präsentationsschicht

Registrieren von Action-Objekten

• anmelden eines Action-Objekts => mittels setAction()-Methode

• =>wird als Listener registriert

• =>actionPerformed() wird immer aufgerufen, sobald passendes Ereignis in Darstellungskomponente stattfindet.

Page 11: Die Präsentationsschicht

Parameter in Action-Objekten

• angemessene Reaktion => Parameter

• Mittels putValue()/getValue()

• Übergabe von Schlüssel/Wert-Paaren

• Problem: richtiger Zeitpunkt der Übergabe

Page 12: Die Präsentationsschicht

Parameter-Übergabe

• Trick:

• Im z.B. Button wird zusätzlicher ActionListener registriert

• => dessen actionPerformed()-Methode wird dann ebenfalls aufgerufen und zwar zuerst

• =>hier werden Parameter des Action-Objekts gesetzt.

Page 13: Die Präsentationsschicht

Action-Konzept Bsp.

public class FindAction extends AbstractAction{

public void actionPerformed(ActionEvent ae){

Vector result = Marktplatz.findKatalogelement(getValue(“name“));

ResultDlgFrame rDlg = new ResultDlgFrame(result);

rDlg.show();

}

}

public class SearchDlgFrame extends LineEditFrame{

protected JButton jb;

protected JTextField tf;

public SearchDlgFrame(){

jb.setAction(new FindAction());

jb.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

doActionPerformed(e);

}

});

}

public void doActionPerformed(ActionEvent e){

Object src = e.getSource();

Action action = ((JButton)src).getAction();

action.putValue(“name“,tf.getText());

}

}

Page 14: Die Präsentationsschicht

Trennung der Verantwortklichkeiten - MVC

• MVC: Model-View-Controller-Entwurfsmuster

• Trennung zwischen:

-Daten der Anwendung (model),

-Darstellung der Daten (view) und

-Dialogkontrolle(control)

Page 15: Die Präsentationsschicht

Swing-Komponenten

• Elementare GUI-Controlls: Textfelder, Radiobuttons,…

• Fenster(JFrame) und andere Container(JPanel)

• Layout-Manager steuert Anordnung in Containern(z.B. BorderLayout, FlowLayout, GridLayout)

Page 16: Die Präsentationsschicht

Überblick – wichtige Swing-Komponenten

Komponente Aufgabe wichtige Methoden

JLabel Darstellung von Zeichenketten setText(String)

JTextField Anzeigen und Editieren von setText(String) Zeichenketten getText():String

JTextArea analog, nur mehrzeilig analog

JCheckBox Darstellung und Änderung von setSelected(boolean) Wahrheitswerte durch Ankreuzen isSelected(): boolean

JComboBox stellt Liste von Optionen in Form getSelectedItem():Object einer Dropdown-Liste dar setSelectedItem(Object)

JTree stellt Daten hierarchisch dar setModel(TreeModel) (z.B. Verzeichnisstruktur)

JButton stellt einen einfachen Button dar

Page 17: Die Präsentationsschicht

Swing-Komponenten Tutorial

Page 18: Die Präsentationsschicht

Überblick über das bsp. Framework

JFrame RootFrame

Observer TreeFrame

DialogFrame

LineEditFrame

JPanel TablePanel

JTextFieldCheckableTextField

InterfacePropertyChecker

AbstractChecker

Fensterklassen

Tabellen

Eingabefelder

Page 19: Die Präsentationsschicht

Dialogfenster

DialogFrame(String title)

void createCancelButton()

JButton addActionButton(Action action)

abstract void doActionPerformed(ActionEvent e)

title

button nbutton1 …

Page 20: Die Präsentationsschicht

Eingabedialoge

LineEditFrame(String title)

void addProperty(String label, JComponent inputElement)

void setData(Object data)

void setFacade(IMarktplatz marktplatz)

title

button1 button n…

label 1: textfield1

label 2: textfield2

label…: textfield n

label … radiobutton

label … checkbox

Page 21: Die Präsentationsschicht

Überblick Controller-Komponenten

AbstractAction MarktAction

LoginAction DoFindAction

CheckLoginAction NewAnbieterAction

Page 22: Die Präsentationsschicht

AbläufeBsp. Anmeldung eines Anbieters

loginDlg

LoginDlgFr

MarktActionCheckLoginAction

fassadeMarktplatz

mCurrentAnbieterAnbieter

Enter name/password

Klick loginactionPerformed() currentAnbieter = checkLogin(name,pwd)

[currentAnbieter!=null]

loginFailed()

ahf

AnbieterHomeFrame

show()

getName()