Upload
karlene-gerth
View
107
Download
1
Embed Size (px)
Citation preview
AWT und JFC
• Abstract Windowing Toolkit - Bibliothek von JDK (sog. Package..)
- Seit JDK 1.0
einige Nachteile.....
• JavaTM Foundation Classes -Sammlung graphischer Dialogelemente
Swing
• Erweiterung von AWT• Eigenschaften - GUI-Elemente werden selbst erzeugt Im JDK1.1 eingeführt
Leichtgewichtige Komponenten und Schwergewichtige Komponenten im AWT
z.B: Swing-Button unter Windows ....
- Debug-Graphik - Look-and-Feel
Auswahlmöglichkeiten Umschaltung von Anwendung zur Laufzeit
Das Model-View-Controller-Prinzip
Der Code wird nicht mehr in einer Klasse gepackt sondern…
- ModelVerarbeitungslogik der Komponenten
- ViewDarstellung
- ControllerEvents
Vergleich von AWT und Swing
Swing-Komponenten haben einige neue Features zur Verfügung
Swing-Komponenten sind alle in JAVA implementiert
Swing Komponente verfügen über ein einheitliches dynamisches Look and Feel standardisiert
Swing hat doppelt so viele Komponenten wie das AWT komfortableres Programmieren, viele sog. „widgets“ wie z.B. Standarddialoge
Vorteile von Swing:
Vergleich von AWT und Swing
• Wichtige Merkmale:• zu jeder AWT-Komponente des AWT gibt es
entsprechende Swing-Komponenten, diese beginnen mit J- z.B. JButton statt Button
• zusätzlich ein neues Set an Komponenten• Swing-Komponenten sind alle Subklassen der
Klasse JComponent• alle Elemente von Swing sind Bestandteil des
Paketes javax.swing• Vererbungsunterschiede zwischen AWT und
Swing (siehe Diagramm)
Vergleich von AWT und Swing
• Gliederung der Swing-Elemente in:
• Kontrollelemente/Komponenten
• Container
• LayoutManager
• Events
Vergleich von AWT und Swing
AWT
Vergleich von AWT und Swing
Swing
Swing-Container dienen als Behältnis für Komponenten
Anordnung der Komponenten in einem rechteckigen Bereich
Beispiele für Container:
JFrame
JWindow
JPanel
JDialog
„normale“ Fenster mit Rahmen & Titel
Fenster ohne Rahmen & Titel (z.B. Popup-Menu)
„Ausschnitt“ eines Fensters können beliebig ineinander verschachtelt werden
Fenster, das zu einem „Oberfenster“ gehört
Hinzufügen von Komponenten mit Hilfe der Methode
void add(JComponent comp)
wird von jedem Container implementiert
Beispiel:
JButton okButton = new Button(“OK“);JPanel panel = new JPanel();
panel.add(okButton);
Frage: Wie werden die Komponenten in dem Container angeordnet? ?
Zuordnung von Layout-Managern mit der Methode
void setLayout(LayoutManager manager);
wird ebenfalls von jedem Container implementiert
Aufruf mit dem Argument null „Standard“-Layout-Manager
Komponenten müssen „von Hand“ mit der Methode
void setBounds(int x, int y, int w, int h);
skaliert und angeordnet werden
Vorteil: Volle Kontrolle Nachteil: Keine Automatisierung
FlowLayout BorderLayout GridLayout
Anordnung wie Wörter in einem Text
Ausrichtung einstellbar hier: zentriert
Anordnung am Rahmen nach Himmelsrichtungen(NORTH, SOUTH, EAST, WEST) und im Zentrum (CENTER)
Anordnung in einem regelmäßigen Gitter
hier: 2 x 3 - Gitter
In die Container kommen die verschieden Komponenten
diese werden von der Java-Swing Bibliothek angeboten
Meist werden aber auch noch einige Klassen von AWT benötigt
Menüleiste (MenuBar)ButtonsTextfelder ListenfensterGrafikenusw.
Menüleiste
Buttons
Listenfenster
Combo Boxen
Textfelder
• durch z.B. zusätzliche Tool Tips • diese kennt man aus der gesamten Windows
Welt wenn man länger mit der Maus an einer Stelle verweilt
• Beispiel:
Es gibt zwei Arten Java-Programme
application applet
• Klasse mit main-Methode • HTML-Datei• Initialisierung mit init();• Ausführen mit start();AnalyseProgramm
AnalyseKomponenteextends JFrame
import javax.swing.UIManager;
import java.awt.*;
public class AnalyseProgramm
{
// Konstruktor
public AnalyseProgramm() {
AnalyseKomponente frame = new AnalyseKomponente();
frame.setVisible(true);
}
//Center the window
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
Kleingedrucktes:
passt das Fenster an.
Fenster wird ‚sichtbar‘ gesetzt
Die Klasse AnalyseProgramm:
TEIL 1
//Main method
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeel
ClassName());
}
catch(Exception e) {
e.printStackTrace();
}
new AnalyseProgramm();
}
}
Die Klasse AnalyseProgramm:
TEIL 2
main-Methode
Erzeugung des Fensters
import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class AnalyseKomponente extends JFrame {// Komponenten werden angelegt...// Rahmen wird konstruiert...// Komponenten werden initialisiert ...
jPanel2.add(jTabbedPane1, BorderLayout.CENTER); jTabbedPane1.add(jPanel4, "Graphenschreiber"); jTabbedPane1.add(jPanel5, "Karnaugh-Diagramm"); jTabbedPane1.add(jPanel6, "Wertetabelle"); jTabbedPane1.setSelectedComponent(jPanel4);
...}
Die Klasse AnalyseKomponente
Wie werden die Fenster-Elemente positioniert?
content pane
cont
ent p
ane
Bor
derL
ayou
t
SOUTH
CENTER
cont
ent p
ane
Bor
derL
ayou
t
SOUTH
CENTERCENTER
SOUTH
cont
ent p
ane
Bor
derL
ayou
t
jPanel2.add(jTabbedPane1, BorderLayout.CENTER);
jTabbedPane1.add(jPanel4, "Graphenschreiber");
jTabbedPane1.add(jPanel5, "Karnaugh-Diagramm");
jTabbedPane1.add(jPanel6, "Wertetabelle");
jTabbedPane1.setSelectedComponent(jPanel4);
Ein umfassenderes Beispiel ?