2016-12-30 6 views
-8

so mache ich das "Simon Spiel" und ich brauche einen Java-Code, um das Programm für 0,5 Sekunden anzuhalten, um dem Benutzer die Tasten zu zeigen, die er drücken muss.Java, muss das Programm für 0,5 Sekunden pausieren

greenButton.setBackground(Color.GREEN); 
      //need to stop here 
      press = true; 
+1

Mögliches Duplikat von [Java Timer] (http://stackoverflow.com/questions/1041675/java-timer) – SOFe

+6

Sie müssen mehr Kontext bereitstellen - möglicherweise ein Beispiel mit einem kurzen Code. Im Allgemeinen können Sie einfach 'Thread.sleep (500);' verwenden, aber Sie erwähnen Schaltflächen und wenn Sie auf den GUI-Thread warten, wird die Anwendung eingefroren. – assylias

+0

Meine Vermutung ist, dass dies ein Swing-Programm ist und Sie Thread-Schlaf versucht haben und festgestellt haben, dass es nicht funktioniert. Wenn ja, benutze einen Swing Timer, aber warum rätst du uns? –

Antwort

1
Thread.sleep(500); 

Weitere Informationen finden Sie this

1

Sie Thread.sleep nutzen könnten (500) 0,5 Sekunden lang warten ..... und in einem anderen Thread dem Benutzer die Schaltflächen angezeigt werden soll. .... Oder Sie können ein flüchtiges boolesches Flag setzen, das aktiviert wird, wenn Sie dem Benutzer die Schaltfläche zeigen, auf die er klicken muss .... und die alle anderen Threads pausiert .... sobald der Benutzer auf die Schaltfläche klickt, wird die Flagge angezeigt sollte nicht gesetzt sein und alle anderen Threads sollten benachrichtigt werden.

+0

Das neueste Update anzeigen ... es wäre gut, wenn Sie einen Benachrichtigungsmechanismus einrichten ... 500 Millisekunden warten und der Benutzer auf die Schaltfläche klickt ... Der Klick, der den wartenden Thread benachrichtigt, wird fortgesetzt. – prashant

0

Da dies Swing zu sein scheint, verwenden Sie eine Swing Timer, um anzuhalten, ohne das Programm einzufrieren.

int delayTime = 500; // for 500 msecs 
new Timer(delayTime, new ActionListener() { 
    public void actionPerformed(ActionEvent e) { 
     // TODO: code to be delayed goes here 

     // stop the timer from repeating 
     ((Timer) e.getSource()).stop(); 
    } 
}).start(); 
0

können Sie verwenden, um den CountDownLatch API https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/CountDownLatch.html

Für zB. Erstellen Sie im ersten Thread ein Latch mit Zähler als 1 und übergeben Sie es an den zweiten Thread, der UI verarbeitet. Dann im ersten Thread warten() auf den Latch. Dies führt dazu, dass der erste Thread darauf wartet, dass der Zählerstand null wird. Parallel dazu können Sie im zweiten Thread das UI-Ereignis behandeln und dort latch.countDown() ausführen. Sobald die Zählung auf Null geht, wird Thread 1 wieder aktiv. Sie können in Thread 1 auch eine Zeitüberschreitung angeben. Thread One kommt aus dem Wartezustand und setzt die Verarbeitung fort, wenn die Zeitüberschreitung eintritt.

Verwandte Themen