GUI-Klasse für die
Fachklasse StoppUhr
Download:
JStoppUhr Demo.java
|
Wir haben
schon an verschieden Stellen GUI-Klassen kennen gelernt. Wir haben Sie
immer als Swing-Klassen geschrieben, Klassen also, die von JFrame erben.
Man benutze diesen Quelltext um die wesentlichen Bestandteiler einer
solchen Klasse noch einmal zu wiederholen: Erben von
JFrame
- Implementieren des Interfaces
ActionListener -
Ereignisbehandlung etc.import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JStoppUhrDemo extends JFrame
implements ActionListener{
private JPanel meinPanel;
private JButton start, stopp, zwischenZeit;
private JLabel ausgabe;
private StoppUhr meineStoppUhr;
public JStoppUhrDemo(String titel){
super(titel);
setDefaultCloseOperation(EXIT_ON_CLOSE);
meineStoppUhr = new StoppUhr();
meinPanel = new JPanel(new BorderLayout(15,5));
getContentPane().add(meinPanel);
start = new JButton("Starte Uhr");
start.addActionListener(this);
meinPanel.add(start,BorderLayout.WEST);
stopp = new JButton("Stoppe Uhr");
stopp.setEnabled(false);
stopp.addActionListener(this);
meinPanel.add(stopp,BorderLayout.EAST);
zwischenZeit = new JButton("Zwischenzeit");
zwischenZeit.setEnabled(false);
zwischenZeit.addActionListener(this);
meinPanel.add(zwischenZeit,BorderLayout.CENTER);
ausgabe = new JLabel("Anzeige");
ausgabe.setEnabled(false);
meinPanel.add(ausgabe,BorderLayout.SOUTH);
pack();
setResizable(false);
Dimension screenSize =
Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screenSize.width - this.getSize().width)/2,
(screenSize.height - this.getSize().height)/2);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
Object obj = e.getSource();
if (obj == start){
stopp.setEnabled(true);
zwischenZeit.setEnabled(true);
start.setEnabled(false);
meineStoppUhr.starten();
ausgabe.setText("Uhr läuft");
}
if (obj == stopp){
meineStoppUhr.stoppen();
stopp.setEnabled(false);
zwischenZeit.setEnabled(false);
start.setEnabled(true);
ausgabe.setText(""+meineStoppUhr);
}
if (obj == zwischenZeit){
ausgabe.setText(""+meineStoppUhr);
}
}
public static void main (String[] args) {
new JStoppUhrDemo("StoppUhr-Demo");
}
}
|
|
Da unsere
GUI Ereignisse behandelt brauchen wir nicht mehr 'gekünstelt' den
Thread anhalten, der unsere Uhr steuert, sondern wir überlassen es einem
Akteur, dem Benutzer des Programms also.
Zwei Bemerkung noch zu dem hier
gezeigten JApplet: JApplets basieren im Unterschied zu den normalen
Applets auf der swing-Technologie. Das JApplet benutzt die gleiche
Fachklasse StoppUhr wie unsere swing-Applikation. (Ein weiterer Vorteil
der konsequenten Trennung von Fachklassen und GUI)
|