Timer in JOptionPane anzeigen

OSbOoL

Mitglied
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:

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
 

MoxxiManagarm

Top Contributor
Ich finde JOptionPane nicht geeignet, schreib dir lieber einen eigenen Dialog. Hier eine quick&dirty Demo

Java:
public class TimerDialogDemo extends JFrame {
    public TimerDialogDemo() {
        setTitle("Timer Dialog Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());

        JButton startTimerDialogButton = new JButton("Start");
        startTimerDialogButton.addActionListener(e -> new TimerDialog(10).setVisible(true));
        add(startTimerDialogButton, BorderLayout.CENTER);

        pack();
    }

    public static void main(String... args) {
        SwingUtilities.invokeLater(() -> new TimerDialogDemo().setVisible(true));
    }
}

class TimerDialog extends JDialog {
    private Timer timer;
    private int loops;
    private JLabel displayLabel;

    public TimerDialog(int loops) {
        this.loops = loops;

        setModal(true);
        setLayout(new BorderLayout());

        displayLabel = new JLabel("Remaining: " + loops);
        add(displayLabel, BorderLayout.CENTER);

        timer = new Timer(1000, e -> { // hier: Swing Timer
            this.loops--;
            displayLabel.setText("Remaining: " + this.loops);

            if (this.loops == 0) {
                timer.stop();
                this.dispose();
            }
        });

        timer.start();

        pack();
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E JDialog mit count down timer AWT, Swing, JavaFX & SWT 1
M 2D-Grafik timer bei Analoguhr AWT, Swing, JavaFX & SWT 2
A Timer AWT, Swing, JavaFX & SWT 1
H Timer ohne alles lahmzulegen? AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Timer in SwingWorker stoppen AWT, Swing, JavaFX & SWT 4
T Timer und GIF Animationen pausieren während Maus sich bewegt AWT, Swing, JavaFX & SWT 4
W Swing JLabel jede Sekunde aktualisieren, ohne Timer zu benutzen AWT, Swing, JavaFX & SWT 4
D Timer für Bildfolge in einem jLabel AWT, Swing, JavaFX & SWT 5
M Event Handling MousePressed vs. Timer! AWT, Swing, JavaFX & SWT 5
F Java Timer Bug? AWT, Swing, JavaFX & SWT 6
B Timer, TimerTask und Warten AWT, Swing, JavaFX & SWT 4
R Performance Drag and Drop & Timer AWT, Swing, JavaFX & SWT 3
E Problem mit Timer und Swing AWT, Swing, JavaFX & SWT 8
N AWT Timer überschreiben? AWT, Swing, JavaFX & SWT 8
P Label rotieren mit Timer AWT, Swing, JavaFX & SWT 5
F Swing GUI und Model mit Timer AWT, Swing, JavaFX & SWT 13
K Threads - Timer - run() mehrfach parallel? AWT, Swing, JavaFX & SWT 2
J Nach Timer ausführen AWT, Swing, JavaFX & SWT 6
S Timer oder Thread.sleep AWT, Swing, JavaFX & SWT 3
D Timer JFrame AWT, Swing, JavaFX & SWT 7
F Swing timer nimmt delay nicht an AWT, Swing, JavaFX & SWT 2
S Swing Timer, Countdown AWT, Swing, JavaFX & SWT 2
F Timer welches JPanel aktualisiert AWT, Swing, JavaFX & SWT 6
H Timer/Stoppuhr in MenuBar anzeigen AWT, Swing, JavaFX & SWT 4
D Applet Methode in Timer einbinden AWT, Swing, JavaFX & SWT 6
F Applet Applet starten...(+Timer?) AWT, Swing, JavaFX & SWT 12
R Probleme mit Swing Timer AWT, Swing, JavaFX & SWT 6
C Timer Problem AWT, Swing, JavaFX & SWT 5
VfL_Freak Swing kann ich einen laufenden Timer mitten in der Ausführung abbrechen? AWT, Swing, JavaFX & SWT 6
H Swing Timer Probleme AWT, Swing, JavaFX & SWT 5
Burny91 Swing Mit Timer JLabel updaten AWT, Swing, JavaFX & SWT 2
P Game of Life - PaintComponent-Problem / Timer? AWT, Swing, JavaFX & SWT 8
B JLabel mittels Timer und setLocation verschieben AWT, Swing, JavaFX & SWT 3
O Swing es können keine neuen Labels hinzufügt werden während der Timer läuft AWT, Swing, JavaFX & SWT 14
C Timer erstellen? AWT, Swing, JavaFX & SWT 2
E AWT Problem mit Repaint (in Loop oder Timer) AWT, Swing, JavaFX & SWT 3
K Timer und Threads ruckeln für Fotoschwenk AWT, Swing, JavaFX & SWT 3
L Timer Swing GUI AWT, Swing, JavaFX & SWT 2
G Swing Timer stoppen AWT, Swing, JavaFX & SWT 4
B Swing-Timer AWT, Swing, JavaFX & SWT 4
D javax.swing.Timer bringt NullPointerException AWT, Swing, JavaFX & SWT 4
J Swing timer? AWT, Swing, JavaFX & SWT 2
C Timer, Darstellung einer Uhr AWT, Swing, JavaFX & SWT 4
Z javax.swing.Timer: wie stoppen??? AWT, Swing, JavaFX & SWT 9
G JOptionPane zeigt nicht an was ich will AWT, Swing, JavaFX & SWT 2
A JOptionPane OK ohne Eingabe abfangen AWT, Swing, JavaFX & SWT 10
senol JOptionPane hilfe!!! :(((( AWT, Swing, JavaFX & SWT 32
J JOptionPane ruft sich selbst immer wieder neu auf AWT, Swing, JavaFX & SWT 3
J JOptionPane return bei "Abbrechen" AWT, Swing, JavaFX & SWT 13
R JOptionPane schließt sich nicht wieder AWT, Swing, JavaFX & SWT 2
O Swing JOptionPane.showOptionDialog - Wie kann ich Buttons größer machen AWT, Swing, JavaFX & SWT 10
Z Swing JOptionPane import AWT, Swing, JavaFX & SWT 5
R Swing JOptionPane Sprache Ändern AWT, Swing, JavaFX & SWT 4
O JOptionPane mit JFileDialog AWT, Swing, JavaFX & SWT 5
dereki2000 JPanel mit Rückgbe wie bei JOptionPane AWT, Swing, JavaFX & SWT 3
T JavaFX JFrame verhalten wie JOptionPane (ErrorMessage) AWT, Swing, JavaFX & SWT 1
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
N Swing Mocken von JOptionPane im JUnit-Test AWT, Swing, JavaFX & SWT 3
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JOptionPane AWT, Swing, JavaFX & SWT 1
T JOptionPane Dialog plus Rechnung ausgeben AWT, Swing, JavaFX & SWT 1
snipesss Hintergrundbild in JOptionPane.showInputDialog? AWT, Swing, JavaFX & SWT 4
R Swing JOptionPane Fehlermeldung- bitte um Hilfe! AWT, Swing, JavaFX & SWT 4
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
A Swing JOptionPane.showConfirmDialog, EventQueue wird weiter abgearbeitet AWT, Swing, JavaFX & SWT 2
C JOptionPane.showConfirmDialog() -> Focus auf NEIN -> Enter gibt YES_OPTION zurück AWT, Swing, JavaFX & SWT 6
T JOptionPane Enter = Okay AWT, Swing, JavaFX & SWT 3
OnDemand JOptionPane AWT, Swing, JavaFX & SWT 2
B JFrame wie JOptionPane.showMessageDialog() AWT, Swing, JavaFX & SWT 2
D Swing JOptionPane verschwindet beim 2. Aufruf einfach so?? AWT, Swing, JavaFX & SWT 2
L Swing JOptionPane Verwirrung AWT, Swing, JavaFX & SWT 13
P JOptionPane input und show Message Dialog AWT, Swing, JavaFX & SWT 5
I javascript in javaprogramm JOptionpane -> haengt (embedded Interpreter) AWT, Swing, JavaFX & SWT 2
S JOptionPane sinnvoll benutzen AWT, Swing, JavaFX & SWT 7
J JOptionPane mit zwei Buttons?! AWT, Swing, JavaFX & SWT 3
D JOptionPane.QUESTION_MESSAGE Fett darstellen AWT, Swing, JavaFX & SWT 4
N JOptionPane als JWindow AWT, Swing, JavaFX & SWT 2
M Swing Änderungen eines TextFelds und JOptionPane AWT, Swing, JavaFX & SWT 5
O JOptionPane.showMessageDialog mit automatischem Zeilenumbruch AWT, Swing, JavaFX & SWT 9
E Swing setCaretPosition für ein JTextField in einem JOptionPane AWT, Swing, JavaFX & SWT 3
H Swing JOptionPane.showConfirmMessage() wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
R JOptionPane.YES_NO_CANCEL_OPTION im SaveDialog verwenden AWT, Swing, JavaFX & SWT 6
U JFrame minimiert nach JDialog, JOptionPane AWT, Swing, JavaFX & SWT 3
R Eingegebenen Text in JOptionPane in andere Klasse weitergeben AWT, Swing, JavaFX & SWT 2
M JOptionPane.showInputDialog abbrechen abfangen? AWT, Swing, JavaFX & SWT 2
Weiti JOptionPane aus einer von JPanel abgeleiteten Klasse aufrufen AWT, Swing, JavaFX & SWT 3
N OK-Button in JOptionPane ansprechen AWT, Swing, JavaFX & SWT 5
D Swing JOptionPane + FileChooser .. Reihenfolge wichtig!? AWT, Swing, JavaFX & SWT 7
G Swing Meldung mit joptionpane information message AWT, Swing, JavaFX & SWT 22
B Swing JOptionPane ohne beep AWT, Swing, JavaFX & SWT 6
A Swing \t im JOptionPane AWT, Swing, JavaFX & SWT 2
G JOptionPane.showConfirmDialog size problem AWT, Swing, JavaFX & SWT 3
S JOptionPane - InitialValue AWT, Swing, JavaFX & SWT 9
S JOptionPane resultat kriegen AWT, Swing, JavaFX & SWT 7
ABstraCT JOptionPane setSize ? AWT, Swing, JavaFX & SWT 6
S JOptionPane.showInputDialog JList erzwingen? AWT, Swing, JavaFX & SWT 4
SebSnake JFrame "Focus" erzwingen (wie JOptionPane) AWT, Swing, JavaFX & SWT 3
G JOptionPane.showInputDialog(): Texteingabe und Fokus AWT, Swing, JavaFX & SWT 3
A Array wird im JOptionPane mehrfach ausgegeben AWT, Swing, JavaFX & SWT 3
A JOptionPane soll auf Enter reagieren AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben