Weiterleitung

witness

Grünschnabel
Hi

Hab ein JFrame mit Button und Textfield.
Nach drücken des Buttons wird man weitergeleitet.
Das funktioniert auch alles.

Jetzt möchte ich das nach drücken des Buttons ein paar Sekunden gewartet wird bis das neue Jframe aufgerufen wird.

Rufe wait() auf bekomme da aber eine IllegalMonitorStateException.

Blick bei dieser ganzen Sache nicht ganz durch.

Vielleicht kann mir ja jemand helfen.

Dank und Gruss

witness
 
Probiers mal mit this.sleep( int AnzahlDerMilliSekunden ) ..

wait() ist ein wenig schwieriger zu benutzen ..
 
Hallo,
wait() ist für das Synchronisieren von einzelnen Threads (glaube ich zumindest...)

hiermit sollte es klappen:
Code:
try {
   Thread.sleep(5000);   //5000 Millisekunden warten
} catch (InterruptedException e) {
     e.printStackTrace();
  }
 
Hallo!

Schau mal hier:
Code:
 * created on 02.03.2005@17:36:48
 */
package de.tutorials;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

/**
 * @author Administrator
 * 
 */
public class JFrameDelayExample extends JFrame {

    private JButton btn;

    private Timer timer = new Timer();

    public JFrameDelayExample() {
        super("JFrameDelayExample");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        btn = new JButton("Open new Frame");
        btn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                timer.schedule(new TimerTask() {
                    public void run() {
                        new JFrame("New Frame").setVisible(true);
                    }
                }, 10000L);
            }
        });

        getContentPane().add(btn, BorderLayout.CENTER);

        pack();
        setVisible(true);
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        new JFrameDelayExample();
    }
}

... so blockiert man nicht den Swing EDT ;-)

wait() ist in der Tat ein Mittel zur "Low-Level" Synchronisation in Java. Die Methode kann nur innerhalb eines synchronisierten Bereiches (innerhalb eines synchronized Blocks bzw. einer synchronisierten Methode "richtig") aufgerufen werden.

Gruß Tom
 
Zurück