pdf, 4 Folien pro Seite

Werbung
Client-Server-Anwendungen
Programmierung graphischer Benutzeroberflächen
Ereignisorientierung, Model-View-Control
• Aktionen lösen Ereignisse aus (Control)
• Ereignisse führen zur Verarbeitung der
eingegebenen Daten (Model)
• Ergebnisse werden in der GUI sichtbar
gemacht (View)
Client-Server-Anwendungen
•
•
•
•
•
Webanwendungen (HTML-Oberflächen für Clients)
Thin Client
Graphische Benutzeroberfläche,
Smart Client
Unterschiedlich ausgeprägte lokale
Rich Client
Verarbeitung
Fat Client
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
Typische Aktionen:
• Ein Button (Knopf) wird gedrückt
• Ein Text wird in ein Textfeld eingegeben
• Eine Checkbox wird angewählt
• …
126
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
127
Swing-Dialogelemente (Beispiele)
Programmierung graphischer Benutzeroberflächen
Graphical User Interfaces (GUIs)
•
•
•
AWT (Abstract Windowing Toolkit)
SWT (Standard Widget Toolkit)
Swing (Widget Toolkit, Java)
java.awt.*
javax.swing.*
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
128
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
129
Einige Swing-Dialogelemente
Swing-Dialogelemente (Beispiele)
JFrame
…
getContentPane().setLayout(null);
setPreferredSize(new java.awt.Dimension(267, 231));
setTitle("Mehrwertsteuer");
setResizable(false);
getContentPane().setBackground(
new java.awt.Color(230,230,255));
this.setFont(new java.awt.Font("Arial",0,9));
{
Nettobetrag = new JLabel();
getContentPane().add(Nettobetrag,
new AnchorConstraint(113, 329, 238, 75,
AnchorConstraint.ANCHOR_REL,
AnchorConstraint.ANCHOR_REL,
AnchorConstraint.ANCHOR_REL,
AnchorConstraint.ANCHOR_REL));
Nettobetrag.setText("Nettobetrag");
Nettobetrag.setBounds(20, 22, 112, 25);
}
…
JDialog
JTextField
JTextField
nicht editierbar
JLabel
JButton
Typischerweise sind Buttons (Knöpfe)
als ActionListener registriert
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
130
Swing-Dialogelemente (Beispiele)
131
Swing-Dialogelemente (Beispiele)
…
{
Berechnen = new JButton();
AnchorLayout BerechnenLayout = new AnchorLayout();
Berechnen.setLayout(BerechnenLayout);
getContentPane().add(Berechnen,
new AnchorConstraint(766, 472, 871, 75,
AnchorConstraint.ANCHOR_REL,
AnchorConstraint.ANCHOR_REL,
AnchorConstraint.ANCHOR_REL,
AnchorConstraint.ANCHOR_REL));
Berechnen.setText("Berechnen");
Berechnen.setPreferredSize(
new java.awt.Dimension(108, 21));
Berechnen.setBounds(20, 152, 108, 21);
Berechnen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BerechnenActionPerformed(evt);
}
});
}
…
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
Programmierung der GUI:
• Graphischer Editor
Programmierung der fachlichen Berechnungen:
• Manuell
Berechnen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BerechnenActionPerformed(evt);
}
});
}
…
132
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
133
Interessante Systemschnittstellen (aus java.awt.event)
ActionListener
AdjustmentListener
AWTEventListener
ComponentListener
ContainerListener
FocusListener
HierarchyBoundsListener
HierarchyListener
InputMethodListener
ItemListener
KeyListener
Interessante Systemschnittstellen (aus java.awt.event)
MouseListener
MouseMotionListener
MouseWheelListener
TextListener
WindowFocusListener
WindowListener
WindowStateListener
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
ActionListener
Interface aus java.awt.event
Zu implementierende Methoden:
void actionPerformed(ActionEvent e)
Invoked when an action occurs.
Typische actions:
• Ein Button (Knopf) wird gedrückt
• Ein Text wird in ein Textfeld eingegeben
• Eine Checkbox wird angewählt
• …
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
134
Swing-Dialogelemente (Beispiele)
135
Klassenschachtelung: Anonyme innere Klassen
Programmierung der GUI:
• Graphischer Editor
Allgemein:
Programmierung der fachlichen Berechnungen:
• Manuell
new KlasseOderSchnittstelle()
{ /* Eigenschaften der inneren Klasse */ }
entspricht
class Anonymous extends Klasse { … }
Berechnen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BerechnenActionPerformed(evt);
}
});
}
…
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
oder
class Anonymous implements Schnittstelle { … }
136
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
137
Klassenschachtelung: Anonyme innere Klassen
Swing-Dialogelemente (Beispiele)
Berechnen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BerechnenActionPerformed(evt);
}
}
);
}
Programmierung der GUI:
• Graphischer Editor
Programmierung der fachlichen Berechnungen:
• Manuell
entspricht
class Anonymous implements ActionsListener {
public void actionPerformed(ActionEvent evt) {
BerechnenActionPerformed(evt);
}
}
Berechnen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
BerechnenActionPerformed(evt);
}
});
}
…
BerechnenBerechnen.addActionListener(new Anonymous());
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
138
Eclipse GUI-Editoren
http://wiki.computerwoche.de/doku.php/programmierung/gui-builder_fuer_eclipse
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
140
Wolfgang Goerigk: Objektorientierte Programmierung in Java (SS 2009)
139
Herunterladen