Model-View-Controller
Ereignisse
Beispiel TSP
Software-Ergonomie: Wie werden die Oberflächen sinnvoll gestaltet, damit man gut arbeiten kann, bezüglich der Aufgaben, der Gestaltung und der Dialogabläufe.
Pattern / Muster zur systematischen Entwicklung von Benutzeroberflächen.
Modell: Anwendungsprogramm, enthält die eigentliche Anwendungslogik.
View: Sicht auf das Modell, die der Benutzerin in der Oberfläche angezeigt wird.
Controller: Aktivitäten, die durch Benutzer Ereignisse (Maus, Taste, Button) ausgelöst werden und den Zustand des Modells ändern.
In Java meist nur Observer-Pattern verwendet.
Observer-Pattern: eine Beobachtungskomponente betrachtet eine Anwendung und erhält bei Änderungen der Anwendungen diese mitgeteilt wenn er sich bei der Anwendung registriert hat.
View ist dabei Observer des Modells; die Controls sind Observer der Views und beeinflussen das Modell,
Entwickeln des Modells
Erzeugen einer Komponete
JPanel knopf = new JButton("Text");
Setzen von Eigenschaften
knopf.setForeground( color );
Erzeugen und hinzufügen von Beobachtern / Listeners
knopf.addActionListener( klickAction );
klickAction
gehört zum Control-Teil
Einstellen des Layouts bei umfassenden Panels
bereich.setLayout( new BorderLayout() );
Hinzufügen von inneren Panels oder zu umfassenden Panels
bereich.add( knopf, position );
Methoden zur Zuordnung:
addWindowListener(WindowListener),
addKeyListener(KeyListener),
addActionListener(ActionListener),
addChangeListener(ChangeListener),
addMouseListener(MouseListener),
addMouseMotionListener(MouseMotionListener)
WindowEvent ==> WindowListener:
windowClosed(),
windowActivated(),
windowDeactivated(),
windowOpened(),
windowIconified(),
windowDeiconified()
KeyEvent ==> KeyListener:
keyTyped(), keyPressed(), keyReleased(),
FocusEvent ==> FocusListener:
focusGained(), focusLost(),
MouseEvent ==> MouseListener:
mousePressed(), mouseReleased(),
mouseEntered(), mouseExited(),
mouseClicked()
MouseMotionEvent ==> MouseMotionListener:
mouseMoved(), mouseDragged()
zu den meisten XXXListener Interfaces existieren XXXAdapter Klassen bei denen man nur die gewünschten Methoden überschreiben muss
Event Methoden:
getSource(),
getKeyCode(),
getSource().getActionCommand()
TSP GUI Overview
MVC-Stil:
model = new Model(); action = new ActionControl( model ); view = new View( model, action );
Observer-Stil:
model = new Model(); view = new View(model);
setzen des Controls:
component.setActionListener( new ActionControl( model ) );
setzen des Controls mit anonymer innerer Klasse:
component.setActionListener( new ActionListener() { public void actionPerformed(ActionEvent event) { model.generateProblem(); return; } );
Klassen im Detail
TSP GUI MVC
© Universität Mannheim, Rechenzentrum, 2004-2005.
Heinz KredelLast modified: Sun Jan 22 18:32:48 CET 2006