AWT einfache Stoppuhr -Verbesserungsvorschläge

Bardem

Neues Mitglied
ich habe mir eine stoppuhr mit reinem AWT programmiert, die stunden, minuten und sekunden anzeigen kann. auf die genauigkeit der uhr habe ich keinen wert gelegt. (da müsste man wohl mit die zeiten der Stoppuhr mit der Systemzeit abgleichen oder so..)

Wie dem auch sei, das Programm funktioniert soweit, jedoch sieht der code für mich relativ hässlich aus (v.a. das statische Label das aus meiner MyTime Klasse verändert wird gefällt mir überhaupt nicht, und in einer inneren Klasse möchte ich diese (Thread)-Klasse aufgrund der lesbarkeit nicht haben.

Deshalb eine bitte an euch: bitte sagt mir was ich besser machen kann/soll/muss damit sich das Programm einigermaßen sehen lassen kann.
Einige infos zum Code:

Es gibt 3 Klassen.
-1.Klassse: die Main Klasse --> ruft nur MyFrame auf
-2.Klasse: die MyFrameKlasse (extends Frame) --> zeichnet das Fenster und stellt schließen sowohl übers menu als auch über "schließen" zur verfügung. Außerdem besitzt MyFrame innereKlassen (MyButtonListener, MyWindowCloser, MyMenuCloser)
-3. Klasse: MyTime (implements Runnable) --> ist für das heraufzählen der zeit zuständig

Java:
package stoppuhr.v2;

public class Main {

    public static void main(String[] args) {
        MyFrame frame = new MyFrame("Stoppuhr");
    }

}


Java:
package stoppuhr.v2;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MyFrame extends Frame {

    private static final long serialVersionUID = 1L;
    private Button start, stop;
    private Panel p1, p2;
    private MyTime myTimeClass = new MyTime();
    public static Label ausgabe = new Label("00:00:00");

    public MyFrame(String titel) {

        setTitle(titel);
        setSize(600, 300);
        setLayout(new GridLayout(2, 1));
        setResizable(false);
        setVisible(true);
        addMyMenu();

        p1 = new Panel();
        p1.setLayout(new FlowLayout()); // innerhalb von p1 soll alles nebeneinander sein.

        p2 = new Panel();
        p2.setLayout(new FlowLayout()); // hier dasselbe wie oben.

        start = new Button("Start");
        start.addActionListener(new MyButtonListener());

        stop = new Button("Stop");
        stop.setEnabled(false);
        stop.addActionListener(new MyButtonListener());

        p2.add(ausgabe);
        p1.add(start);
        p1.add(stop);

        this.add(p2, new FlowLayout());
        this.add(p1);

        addWindowListener(new MyWindowCloser());
    }

    public void addMyMenu() {
        MenuBar bar = new MenuBar();
        Menu menu1 = new Menu("Close");
        MenuItem item1 = new MenuItem("fenster schließen");
        item1.addActionListener(new MyMenuCloser());

        menu1.add(item1);
        bar.add(menu1);
        setMenuBar(bar);
    }

    public static void setLabelText(String name) {
        ausgabe.setText(name);
    }

    class MyButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            // System.out.println(e.getActionCommand()); // .getActionCommand() gibt
            // // sichtbaren Namen des Buttons etc. zurück
            if (e.getSource().equals(start)) {
                myTimeClass.setRunning(true);
                start.setEnabled(false);
                stop.setEnabled(true);
                myTimeClass.setRunning(true);
                Thread erster = new Thread(myTimeClass);
                erster.start();
            }
            if (e.getSource().equals(stop)) {
                myTimeClass.setRunning(false);
                start.setEnabled(true);
                stop.setEnabled(false);
            }
            // System.out.println(e.getSource()); // .getSource() gibt referenz des Objekts
            // zurück.?
        }
    }

    class MyWindowCloser extends WindowAdapter {
        public void windowClosing(WindowEvent e) {
            System.exit(0);
        }
    }

    class MyMenuCloser implements ActionListener {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    }
}

Java:
package stoppuhr.v2;

public class MyTime implements Runnable {

    public int sec, min, h;
    private boolean isRunning = true;

    public void validTimeFormat() {
        if (sec == 60) {
            min++;
            sec = 0;
        }
        if (min == 60) {
            h++;
            min = 0;
        }
    }

    @Override
    public void run() {
        resetTime();

        while (isRunning) {
            try {
                Thread.sleep(999);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            sec++;
            validTimeFormat();
            intTimeToString();
            MyFrame.setLabelText(h + " : " + min + " : " + sec);

        }
    }

    private void resetTime() {
        sec = 0;
        min = 0;
        h = 0;

    }

    public void intTimeToString() {
        String s = String.valueOf(sec);
        String m = String.valueOf(min);
        String hr = Integer.toString(h);

    }

    public void setRunning(boolean value) {
        isRunning = value;
    }

}



ich danke allen, die sich die mühe machen, sich mit meinem code zu beschäftigen :)
Sg
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 einfache GUI mit schwarzem Feld AWT, Swing, JavaFX & SWT 12
X JavaFX Einfache FX Application, aber wie alte Features umgehen? AWT, Swing, JavaFX & SWT 10
E Warum macht die einfache Animation einen kleinen Fehler? AWT, Swing, JavaFX & SWT 14
A Einfache Benutzeroberfläche wie realisieren? AWT, Swing, JavaFX & SWT 6
P Swing Einfache Eingabe in JTextfield wird nicht ausgegeben AWT, Swing, JavaFX & SWT 3
E EINFACHE Verständnisfrage zu repaint(), paintComponent(), usw. AWT, Swing, JavaFX & SWT 16
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
L Einfache Layout Frage für Applet -> Was mache ich bloss falsch? AWT, Swing, JavaFX & SWT 2
V Swing Einfache Graphen-Lib? AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
iLoveTheInternet Einfache Grafikausgabe AWT, Swing, JavaFX & SWT 2
E Swing Einfache Frage zu JMenu AWT, Swing, JavaFX & SWT 4
E Einfache Frage zu GridBagLayout AWT, Swing, JavaFX & SWT 30
E einfache Frage zu invokeLater() AWT, Swing, JavaFX & SWT 4
B Einfache jpg-Bilder anzeigen AWT, Swing, JavaFX & SWT 8
E Einfache Frage zu GridLayout AWT, Swing, JavaFX & SWT 35
H einfache Buttonanzeige AWT, Swing, JavaFX & SWT 2
M Einfache Möglichkeit einen Login Dialog zu bauen? AWT, Swing, JavaFX & SWT 1
M einfache Frage über SWT GUI-Programmierung AWT, Swing, JavaFX & SWT 3
S Einfache Thread-Frage AWT, Swing, JavaFX & SWT 3
G Einfache Text formatierung? Wie? AWT, Swing, JavaFX & SWT 4
O Suche einfache Möglichkeit zum Speichern AWT, Swing, JavaFX & SWT 21
G Einfache Frage Panel AWT, Swing, JavaFX & SWT 5
J JavaFX Stoppuhr mit javafx.timeline AWT, Swing, JavaFX & SWT 2
H Timer/Stoppuhr in MenuBar anzeigen AWT, Swing, JavaFX & SWT 4
J Verbesserungsvorschläge?! Kleines AWT Programm AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben