63 lines
2.3 KiB
Java
63 lines
2.3 KiB
Java
package Classes;
|
|
|
|
import javafx.animation.KeyFrame;
|
|
import javafx.animation.KeyValue;
|
|
import javafx.animation.Timeline;
|
|
import javafx.scene.Scene;
|
|
import javafx.scene.layout.StackPane;
|
|
import javafx.scene.paint.Color;
|
|
import javafx.scene.text.Font;
|
|
import javafx.scene.text.Text;
|
|
import javafx.stage.Stage;
|
|
import javafx.stage.StageStyle;
|
|
import javafx.util.Duration;
|
|
|
|
public final class Toast
|
|
{
|
|
public static void makeText(Stage ownerStage, String toastMsg, int toastDelay, int fadeInDelay, int fadeOutDelay)
|
|
{
|
|
Stage toastStage=new Stage();
|
|
toastStage.setY(ownerStage.getHeight());
|
|
toastStage.initOwner(ownerStage);
|
|
toastStage.setResizable(false);
|
|
toastStage.initStyle(StageStyle.TRANSPARENT);
|
|
|
|
Text text = new Text(toastMsg);
|
|
text.setFont(Font.font("Verdana", 15));
|
|
text.setFill(Color.gray(0.1));
|
|
|
|
StackPane root = new StackPane(text);
|
|
root.setStyle("-fx-background-radius: 5; -fx-background-color: rgba(200, 200, 200, 0.5); -fx-padding: 20px;");
|
|
root.setOpacity(0);
|
|
|
|
|
|
Scene scene = new Scene(root);
|
|
scene.setFill(Color.TRANSPARENT);
|
|
toastStage.setScene(scene);
|
|
toastStage.show();
|
|
|
|
Timeline fadeInTimeline = new Timeline();
|
|
KeyFrame fadeInKey1 = new KeyFrame(Duration.millis(fadeInDelay), new KeyValue (toastStage.getScene().getRoot().opacityProperty(), 1));
|
|
fadeInTimeline.getKeyFrames().add(fadeInKey1);
|
|
fadeInTimeline.setOnFinished((ae) ->
|
|
{
|
|
new Thread(() -> {
|
|
try
|
|
{
|
|
Thread.sleep(toastDelay);
|
|
}
|
|
catch (InterruptedException e)
|
|
{
|
|
// TODO Auto-generated catch block
|
|
e.printStackTrace();
|
|
}
|
|
Timeline fadeOutTimeline = new Timeline();
|
|
KeyFrame fadeOutKey1 = new KeyFrame(Duration.millis(fadeOutDelay), new KeyValue (toastStage.getScene().getRoot().opacityProperty(), 0));
|
|
fadeOutTimeline.getKeyFrames().add(fadeOutKey1);
|
|
fadeOutTimeline.setOnFinished((aeb) -> toastStage.close());
|
|
fadeOutTimeline.play();
|
|
}).start();
|
|
});
|
|
fadeInTimeline.play();
|
|
}
|
|
} |