26.6 Eine GUI (Applikation und JApplet) für die Stoppuhr
 
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");
  }
}
JApplet

 

  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)
 

zur Startseite www.pohlig.de  (C) MPohlig 2004