Link zu www.kneller-gifs.de

GUI - Stoppuhr mit Zeitanzeige beim Stoppen

In diesem GUI-Beispiel wird eine einfache Stoppuhr mit einem Start- und Stoppknopf realisiert. Die gemessene Zeit wird nach dem Stoppen berechnet und in Millisekunden angezeigt. Für die Zeitberechnung wird die Java-Funktion System.currentTimeMillis() genutzt. Sie gibt die aktuelle Uhrzeit in Millisekunden an.

Details:
Im Konstruktor wird die Stoppuhr-GUI erzeugt. Die "Action" wird durch ActionListener realisiert, die an die beiden Buttons angeheftet werden. Jeder Listener ruft nach einem Buttonklick seine Methode auf.

  • start(): Die aktuelle Zeit wird in Millisekunden gelesen und als Startzeit gespeichert
  • stop(): Die aktuelle Zeit wird in Millisekunden gelesen und davon die Startzeit abgezogen. Die berechnete Differenz wird angezeigt

Hier der Quellcode zum oben beschiebenen Programm:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class Stoppuhr extends JFrame {

  private JLabel labelZeitAnzeige;
  private JButton startButton, stopButton;
  long millisekunden;
  long zeit;
  boolean aktiviert=false;

  public Stoppuhr() {
    setTitle("Stopuhr");
    getContentPane().setBackground(Color.ORANGE);
    setLayout(new BorderLayout(9, 9));

    labelZeitAnzeige = new JLabel("Start anklicken...");
    labelZeitAnzeige.setHorizontalAlignment(JLabel.CENTER);
    startButton = new JButton("Start");
    stopButton = new JButton("Stop");

    getContentPane().add("North",labelZeitAnzeige);
    getContentPane().add("West",startButton);
    getContentPane().add("East",stopButton);

    startButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        start();
      }
    });
    stopButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        stop();
      }
    });

    pack();
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
  }
  private void start(){
    aktiviert=true;
    labelZeitAnzeige.setText("Uhr läuft...");
    millisekunden=System.currentTimeMillis();
  }
  private void stop(){
    if(aktiviert){
      millisekunden=System.currentTimeMillis()-millisekunden;
      labelZeitAnzeige.setText(millisekunden+" ms");
      aktiviert=false;
    }
  }
}

Testklasse zum Starten der Anwendung
public class Test {
    public static void main(String[] args) {
        Stoppuhr su=new Stoppuhr();
    }
}