JavaFX: so deaktivieren Sie eine Schaltfläche für eine bestimmte Zeit?
Möchte ich deaktivieren Sie eine Schaltfläche für eine bestimmte Zeit in JavaFX-Anwendung. Gibt es eine Möglichkeit, dies zu tun? Wenn nicht, gibt es eine Arbeit um für dieses?
Unten ist mein code in der Anwendung. Ich habe versucht Thread.sleep
, aber ich weiß, das ist nicht die gute Art und Weise zu unterbinden, dass der Benutzer durch klicken auf die Schaltfläche weiter.
nextButton.setDisable(true);
final Timeline animation = new Timeline(
new KeyFrame(Duration.seconds(delayTime),
new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
nextButton.setDisable(false);
}
}));
animation.setCycleCount(1);
animation.play();
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mit der einfachen Methode von einem thread, stellt die entsprechenden GUI-Aufrufe (durch
runLater()
natürlich):Es ist vielleicht nicht der sauberste Weg, aber sicher funktioniert.
Könnten Sie sich auch mit der
Timeline
:Die Methode zum deaktivieren eines JavaFX-control:
Implementieren Sie können die Zeit, die Logik, die programmgesteuert in irgendeiner Weise, die Sie wünschen, entweder per polling-timer durch diese Methode wird aufgerufen, in Reaktion auf bestimmte Ereignisse.
Wenn Sie diese Schaltfläche beispielsweise durch FXML im SceneBuilder, dann sollten Sie zuweisen den button fx:id, so dass die Referenz automatisch injiziert, die in Ihrem controller-Objekt beim laden der scene graph. Dadurch wird es einfacher für Sie, mit zu arbeiten, die in Ihrem controller-code.
Wenn Sie diese Schaltfläche programmatisch, dann werden Sie bereits über den Verweis in Ihrem code verfügbar.
Oder verwenden Sie einen Dienst und binden die running-Eigenschaft des disableProperty der Schaltfläche tun, die Sie deaktivieren möchten.
Aber die Timeline-Lösung gegeben, die durch Uluk Biy, sieht mehr elegant.