Hi,
ich möchte gerne einen Timer in meinem JOptionPane anzeigen. Es soll eine Zeit ablaufen, die ich vorher definiert habe(beispielsweise 30 Sekunden). Gleichzeitig soll nach dem Ablauf der Zeit das JOptionPane geschlossen werden und eine Methode ausgeführt werden.
Ich habe die GUI sowie den Timer programmiert, jedoch weiß ich nicht wie ich den Code funktionell zusammenführen soll.
Hier der Code der (abgespeckten) GUI:
Den Timer habe ich zum Ausprobieren in einer anderen Klasse erstellt.
Hier der Code:
Das funktioniert soweit alles, nur habe ich, wie gesagt, Probleme damit die beiden Sachen zu vereinen.
Ich weiß auch nicht ob es die beste Lösung ist, da ein JOptionPane zu verwenden, oder ob der Timer zu kompliziert programmiert ist.
Über Ratschläge bin ich dankbar.
LG
ich möchte gerne einen Timer in meinem JOptionPane anzeigen. Es soll eine Zeit ablaufen, die ich vorher definiert habe(beispielsweise 30 Sekunden). Gleichzeitig soll nach dem Ablauf der Zeit das JOptionPane geschlossen werden und eine Methode ausgeführt werden.
Ich habe die GUI sowie den Timer programmiert, jedoch weiß ich nicht wie ich den Code funktionell zusammenführen soll.
Hier der Code der (abgespeckten) GUI:
Java:
public class MainGUI extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1604723320962789523L;
private JPanel contentPane;
class MeinListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Relais an")) {
System.out.println("Test");
pumpRun();
}
}
}
public static void main(String[] args) {
new MainGUI();
}
public MainGUI() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 919, 807);
contentPane = new JPanel();
contentPane.setBackground(UIManager.getColor("Button.shadow"));
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
setSize(992, 797);
setVisible(true);
JButton btnRelais = new JButton("Relais an");
btnRelais.setBounds(250, 25, 195, 129);
MeinListener listener = new MeinListener();
btnRelais.addActionListener(listener);
contentPane.add(btnRelais);
}
private void pumpRun() {
Icon imgIcon = new ImageIcon(this.getClass().getResource("Schlauchpumpe.gif"));
JTextField name = new JTextField();
JTextField vorname = new JTextField();
Object[] message = {"Die Pumpen sind in Betrieb!",
"Zum Abbrechen bitte OK klicken!", imgIcon};
JOptionPane pane = new JOptionPane( message,
JOptionPane.PLAIN_MESSAGE,
JOptionPane.CLOSED_OPTION
);
pane.createDialog(null, "Mittel wird gepumpt!").setVisible(true);
System.out.println("Eingabe: " + name.getText() + ", " + vorname.getText());
}
}
Den Timer habe ich zum Ausprobieren in einer anderen Klasse erstellt.
Hier der Code:
Java:
import java.util.Timer;
import java.util.TimerTask;
public class Countdown {
int timer;
public static void main(String[] args) {
int zaehler = 10;
Countdown countdown = new Countdown();
countdown.counter(zaehler);
}
public void counter(int zaehler) {
timer = zaehler;
Timer timerA = new Timer();
TimerTask taskA = new TimerTask() {
@Override
public void run() {
if (timer >= 0) {
System.out.println(timer);
timer--;
}
if (timer == -1) {
System.out.println("Ende");
timerA.cancel();
}
}
};
timerA.schedule(taskA, 0, 1000);
}
}
Das funktioniert soweit alles, nur habe ich, wie gesagt, Probleme damit die beiden Sachen zu vereinen.
Ich weiß auch nicht ob es die beste Lösung ist, da ein JOptionPane zu verwenden, oder ob der Timer zu kompliziert programmiert ist.
Über Ratschläge bin ich dankbar.
LG