@Override public void start(Stage stage) { stage.initStyle(javafx.stage.StageStyle.TRANSPARENT); stage.setTitle("Vypers Launcher"); StackPane root = new StackPane(); Scene scene = new Scene(root, 820, 520); scene.setFill(Color.TRANSPARENT); StackPane windowContent = new StackPane(); windowContent.setBackground(makeBackground("/background.png", Color.web("#0e0e14"))); windowContent.setBorder(new Border(new BorderStroke( Color.web("#ffffff22"), BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(1) ))); Node socials = socialBar(); StackPane.setAlignment(socials, Pos.TOP_LEFT); StackPane.setMargin(socials, new Insets(12, 0, 0, 12)); Node closeBtn = closeButton(stage, root); StackPane.setAlignment(closeBtn, Pos.TOP_RIGHT); StackPane.setMargin(closeBtn, new Insets(12, 12, 0, 0)); VBox card = buildGlassCard(root); addIntroSplash(card); windowContent.getChildren().addAll(socials, closeBtn, card); Region logo = makeLogo(root); StackPane.setAlignment(logo, Pos.TOP_CENTER); logo.setTranslateY(-220); logo.setViewOrder(-1); addFloaty(logo); root.getChildren().addAll(windowContent, logo); stage.setScene(scene); stage.show(); root.setOpacity(0); root.setScaleX(0.96); root.setScaleY(0.96); FadeTransition f = new FadeTransition(Duration.seconds(0.6), root); f.setFromValue(0); f.setToValue(1); ScaleTransition s = new ScaleTransition(Duration.seconds(0.6), root); s.setToX(1.0); s.setToY(1.0); ParallelTransition pt = new ParallelTransition(f, s); pt.play(); } private VBox buildGlassCard(StackPane root) { VBox card = new VBox(12); card.setAlignment(Pos.CENTER); card.setPadding(new Insets(14, 24, 14, 24)); card.setMaxWidth(360); card.setMinWidth(320); card.setBackground(new Background(new BackgroundFill( Color.web("#00000066"), new CornerRadii(20), Insets.EMPTY))); card.setBorder(new Border(new BorderStroke( Color.web("#ffffff22"), BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(1)))); card.setEffect(new DropShadow(18, Color.web("#00000066"))); VBox fields = new VBox(8); fields.setAlignment(Pos.CENTER); Label userLabel = new Label("Felhasználónév"); userLabel.setTextFill(Color.web("#eeeeee")); userLabel.setFont(Font.font(14)); TextField usernameField = inputField(); Label passLabel = new Label("Jelszó"); passLabel.setTextFill(Color.web("#eeeeee")); passLabel.setFont(Font.font(14)); PasswordField passwordField = passwordField(); fields.getChildren().addAll(userLabel, usernameField, passLabel, passwordField); HBox options = new HBox(10); options.setAlignment(Pos.CENTER); CheckBox remember = new CheckBox("Emlékezz rám"); remember.setTextFill(Color.web("#eeeeee")); options.getChildren().addAll(remember); Button loginButton = redPrimaryButton("BEJELENTKEZÉS"); loginButton.setMaxWidth(Double.MAX_VALUE); loginButton.setFont(Font.font("System", FontWeight.BOLD, 14)); loginButton.setPadding(new Insets(10, 16, 10, 16)); loginButton.setDefaultButton(true); passwordField.setOnKeyPressed(e -> { if (e.getCode() == KeyCode.ENTER) loginButton.fire(); }); VBox.setMargin(fields, new Insets(-40, 0, 0, 0)); VBox.setMargin(options, new Insets(5, 0, 0, 0)); VBox.setMargin(loginButton, new Insets(5, 0, 0, 0)); card.getChildren().addAll(fields, options, loginButton); return card; } private Region makeLogo(StackPane root) { try { ImageView iv = new ImageView(new Image( getClass().getResource("/logo.png").toExternalForm())); iv.setPreserveRatio(true); iv.setFitWidth(260); iv.setOpacity(0.0); FadeTransition ft = new FadeTransition(Duration.seconds(0.5), iv); ft.setFromValue(0); ft.setToValue(1); ft.play(); Pane logoPane = new Pane(); logoPane.setPrefSize(root.getWidth(), root.getHeight() + 400); logoPane.setPickOnBounds(false); logoPane.getChildren().add(iv); iv.layoutXProperty().bind(logoPane.widthProperty() .subtract(iv.fitWidthProperty()).divide(2)); iv.setTranslateY(-195); logoPane.setViewOrder(-1); return logoPane; } catch (Exception e) { Label title = new Label("Vypers Launcher"); title.setFont(Font.font("Verdana", FontWeight.BOLD, 28)); title.setTextFill(Color.web("#ffffffcc")); return title; } }