2016-04-27 14 views
0

Ich brauche eine Art "blockierter Alarm", der vom Benutzer nicht abgewiesen werden kann, bis ein Ereignis eintritt. Also, habe ich die Warnung und entfernt alle Tasten von ihm:Wie man eine Warnung in JavaFX entlässt?

Alert waitingAlert = new Alert(Alert.AlertType.INFORMATION); 
waitingAlert.setTitle("Proposta Inviata"); 
waitingAlert.getButtonTypes().setAll(); 

waitingAlert.setHeaderText("La proposta è stata inviata a " + trade.getPlayer2Name()); 
waitingAlert.showAndWait(); 

Dann muss ich sie schließen, wenn ein bestimmtes Ereignis eintritt. Ich habe gerade versucht, es so zu tun:

waitingAlert.close(); 

Aber es funktioniert nicht.

bearbeiten
Das Panel wird angezeigt, wenn ein Benutzer eine Anfrage an einem anderen Benutzer im Netzwerk zu senden, die in Kauf genommen werden muss oder abgelehnt. Das Prinzip ist, dass die Benutzeroberfläche blockiert wird, bis der andere Benutzer sagt, ob er die Anfrage akzeptiert oder abgelehnt hat. Die Anforderung wird über eine Remote-Methodenaufforderung über ein Ringnetzwerk gesendet. Wenn ich die Antwort erhalte, die ich schließen möchte, verlasse das Panel.

+0

'showAndWait()' blockiert die Ausführung, bis das Fenster geschlossen wird. Wenn also der Aufruf von 'close()' danach kommt, kann es im Grunde nicht erreicht werden. Sie müssen wahrscheinlich ein bisschen klarer darüber sein, was tatsächlich passiert: Machen Sie einen Hintergrundprozess und möchten den Alarm schließen, wenn er abgeschlossen ist? Wenn ja, zeigen Sie, wie Sie das Threading eingerichtet haben. Wenn es das nicht ist, was dann? Vielleicht [bearbeiten] Sie Ihre Frage mit mehr Details ... –

Antwort

1

Um einen Dialog zu haben, der vom Benutzer nicht abgewiesen werden kann, aber auf einen Prozess wartet, müssen Sie dialog.show() verwenden, wie von James_D beschrieben.

Ohne Schaltflächen wird der Dialog jedoch nicht geschlossen und Sie müssen erzwingen.

//for example 
dialog.getButtonTypes().add(ButtonType.CANCEL); 
dialog.hide(); 
dialog.getButtonTypes().remove(ButtonType.CANCEL); 

Damit können Sie einen Dialog schließen, der keine Schaltflächen enthält.

Verwandte Themen