In den Klassen FitnessControl und SchellongControl will ich die Methode stateMachine() erstellen (Klasse TestControl ist Überklasse), so dass ein Sblauf über Dialogen für den Benutzer vorgegeben wird. Ich will dann den aktuellen Wert von state abfragen, und dem Label den dazugehörigen Text zuweisen und den Wert von state dann um eins hochzählen. Außerdem will ich für manche Zustände einen Timer benutzen und bei den anderen Zuständen muss der Benutzer den Button weiter drücken. Weiß jemand wie das mit dem Timer geht, ich kenne mich da nicht so aus. Ich weiß nur, dass man den Timer mit Methode setInitialDelay startet, bzw die Länge des Timer-Intervalls bis zum ersten Event in Millisekunden festlegen kann und die Methode start() zum Starten des Timers. Bei Erreichen des letzten Zustands muss der Dialog dann auch geschlossen werden. Den Dialog erstelle ich in einer anderen Klasse, bei Bedarf kann ich noch alle Klassen hochladen (sind aber ziemlich viele).
Java:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;
@SuppressWarnings("serial")
public abstract class TestControl extends JDialog implements ActionListener
{
protected int state = 0;
protected JLabel label;
protected JButton abbruchButton;
protected JButton weiterButton;
protected Timer theTimer;
public TestControl()
{
super((JFrame)null,"Test Kontrolle",true);
setSize(600,600);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
// Hinzufügen eines Labels zur Ausgabe der Anweisungstexte
label = new JLabel();
label.setPreferredSize(new Dimension(250,200));
// Abbrechen und Weiter Button erstellen
abbruchButton = new JButton("Abbrechen");
abbruchButton.addActionListener(this);
weiterButton = new JButton("Weiter");
weiterButton.addActionListener(this);
// Timer erstellen mit Action Listener
ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
stateMachine();
}
};
theTimer = new Timer(0, actionListener);
theTimer.addActionListener(this);
setLayout(new BorderLayout(10, 10));
setSize(500,500);
add(label);
this.add(label,BorderLayout.NORTH);
add(abbruchButton);
this.add(abbruchButton,BorderLayout.EAST);
add(weiterButton);
this.add(weiterButton,BorderLayout.SOUTH);
}
//Methoden
protected abstract void stateMachine();
public void onTimer()
{
Toolkit.getDefaultToolkit().beep();
theTimer.stop();
}
// Action Listener
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("Abbrechen"))
{
theTimer.stop();
System.exit(0);
}
else if(e.getActionCommand().equals("Weiter"))
{
stateMachine();
}
}
}
Java:
import javax.swing.JDialog;
@SuppressWarnings("serial")
public class FitnessControl extends TestControl
{
public FitnessControl()
{
super();
setSize(600,600);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
// Methoden
protected void stateMachine()
{
state = 0;
switch(state){
case 0:
label.setText("<html> Dies ist ein Messgerät zum Messen des Blutdrucks und des Pulses. Sie haben nun einen Fitnesstest angelegt. <br> 1. Drücken Sie nun auf den Knopf 'Messwerte einlesen'. Wenn Sie dies erledigt haben drücken Sie hier auf 'Weiter'.</html>");
state++;
case 1:
label.setText("<html> 2. Nun wird Ihnen in der Mitte des Fensters ein Diagramm angezeigt mit Ihren Messwerten (darin enthalten sind Puls, diastolischer Blutdruck und systolischer Blutdruck). <br>Auf der rechten Seite des Fensters sehen Sie einen Text, in welchem genauer auf die analysierten Messwerte eingegangen wird. </html>");
state++;
case 2:
label.setText("<html> 4. Sie können auch weitere Tests anlegen im Menü unter 'neuen Test anlegen'. Außerdem können Sie unter dem Menüpunkt 'Namen des Tests editieren' <br> den Namen des in der Auswahlbox aktuell ausgewählten Tests ändern. </html>");
state++;
case 3:
label.setText("<html> 5. Es gibt noch 2 Menüpunkte, um die Daten zu speichern und den Test auszudrucken. </html>");
state++;
case 4:
label.setText("<html> 6. Wenn Sie fertig sind können Sie im Menü oder auf den Button 'Anwendung beenden' drücken. </html>");
}
}
}
Java:
import javax.swing.JDialog;
@SuppressWarnings("serial")
public class SchellongControl extends TestControl
{
public SchellongControl()
{
super();
setSize(600,600);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
}
// Methoden
protected void stateMachine()
{
state = 0;
switch(state){
case 0:
label.setText("<html> Dies ist ein Messgerät zum Messen des Blutdrucks und des Pulses. Sie haben nun einen Schellongtest angelegt. <br> 1. Drücken Sie nun auf den Knopf 'Messwerte einlesen'. Wenn Sie dies erledigt haben drücken Sie hier auf 'Weiter'.</html>");
state++;
case 1:
label.setText("<html> 2. Nun wird Ihnen in der Mitte des Fensters ein Diagramm angezeigt mit Ihren Messwerten (darin enthalten sind Puls, diastolischer Blutdruck und systolischer Blutdruck). <br>Auf der rechten Seite des Fensters sehen Sie einen Text, in welchem genauer auf die analysierten Messwerte eingegangen wird. </html>");
state++;
case 2:
label.setText("<html> 4. Sie können auch weitere Tests anlegen im Menü unter 'neuen Test anlegen'. Außerdem können Sie unter dem Menüpunkt 'Namen des Tests editieren' <br> den Namen des in der Auswahlbox aktuell ausgewählten Tests ändern. </html>");
state++;
case 3:
label.setText("<html> 5. Es gibt noch 2 Menüpunkte, um die Daten zu speichern und den Test auszudrucken. </html>");
state++;
case 4:
label.setText("<html> 6. Wenn Sie fertig sind können Sie im Menü oder auf den Button 'Anwendung beenden' drücken. </html>");
}
}
}