1 / 22

Die Präsentationsschicht

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, …

kele
Download Presentation

Die Präsentationsschicht

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Die Präsentationsschicht - mit Swing

  2. Präsentationsschicht - Verantwortlichkeiten • realisiert Benutzeroberfläche grafisch • sorgt für die Dialogkontrolle Folge von Fenstern zur Durchführung eines Arbeitsablaufes

  3. Präsentation von Daten • Meldungsfenster, Eingabedialoge, … • Darstellungskomponenten: Textfelder, Listboxen, Radiobuttons, Tabellen, Label, … • Editieren von Objektdaten -> Plausibilisierung

  4. Dialogkontrolle • Kontrollfluss in der Benutzerschnittstelle • Benutzerereignisse werden behandelt • Wichtig! -> keine Dialogabfolge in Fenstern • in Swing: Event-Listener

  5. 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

  6. EreignisbehandlungBsp. KeyListener TextfeldListener keyPressed(KeyEvent) : void Dialog Bitte Namen eingeben: Name: ok ActionListener ButtonListener actionPerformed(ActionEvent) • … • mTextfeld.addKeyListener(new TextfeldListener(){ • public void keyPressed(KeyEvent e){ • textfeld_keyPressed(e); • } • }); • btn.addActionListener(new ActionListener(){ • public void actionPerformed(ActionEvent e){ • btn_actionPerformed(e); • } • }); • private void textfeld_keyPressed(KeyEvent e){ • if(e.getKeyChar()==‘?‘)… • }…

  7. DialogkontrolleBsp. Ablauf Präsentationsschicht Suchergebnis Suchoptionen Begriff: Buch ok cancel constructor(ergebnis){ this.ergebnis = ergebnis; fillWindow(); } Listener actionPerformed ok GUI-Controller ergebnis void doSearch(String suchStr){ ergebnis = fassade.find(suchStr); //Suchergebnis in einem neuen Fenster anzeigen } … Anwendungsschicht-Schnittstelle(Fassade)

  8. 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

  9. Action - Interface public interface Action extends ActionListener{ public void actionPerformed(ActionEvent e); public Object getValue(String key); public void putValue(String key, Object value); }

  10. 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.

  11. Parameter in Action-Objekten • angemessene Reaktion => Parameter • Mittels putValue()/getValue() • Übergabe von Schlüssel/Wert-Paaren • Problem: richtiger Zeitpunkt der Übergabe

  12. 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.

  13. 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()); } … } Action-Konzept Bsp.

  14. Trennung der Verantwortklichkeiten - MVC • MVC: Model-View-Controller-Entwurfsmuster • Trennung zwischen: -Daten der Anwendung (model), -Darstellung der Daten (view) und -Dialogkontrolle(control)

  15. Swing-Komponenten • Elementare GUI-Controlls: Textfelder, Radiobuttons,… • Fenster(JFrame) und andere Container(JPanel) • Layout-Manager steuert Anordnung in Containern(z.B. BorderLayout, FlowLayout, GridLayout)

  16. Ü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

  17. Swing-Komponenten Tutorial

  18. Überblick über das bsp. Framework Fensterklassen JFrame RootFrame Observer TreeFrame DialogFrame LineEditFrame Tabellen JPanel TablePanel Eingabefelder JTextField CheckableTextField Interface PropertyChecker AbstractChecker

  19. DialogFrame(String title) void createCancelButton() JButton addActionButton(Action action) abstract void doActionPerformed(ActionEvent e) Dialogfenster title button1 … button n

  20. Eingabedialoge LineEditFrame(String title) void addProperty(String label, JComponent inputElement) void setData(Object data) void setFacade(IMarktplatz marktplatz) title label 1: textfield1 label 2: textfield2 label…: textfield n label … radiobutton label … checkbox button1 … button n

  21. Überblick Controller-Komponenten AbstractAction MarktAction LoginAction DoFindAction CheckLoginAction NewAnbieterAction

  22. AbläufeBsp. Anmeldung eines Anbieters loginDlg LoginDlgFr MarktAction CheckLoginAction fassade Marktplatz mCurrentAnbieter Anbieter Enter name/password Klick login currentAnbieter = checkLogin(name,pwd) actionPerformed() [currentAnbieter!=null] ahf AnbieterHomeFrame getName() show() loginFailed()

More Related