1

JAVAFX Splash Ekranı oluşturalım

Merhaba Arkadaşlar bu yazıda sizinle güzel bir splash  yani başlanğıç ekranını nasıl oluştururuz ona bakacağız . Hem thread kullanacağız . Platform…. ile progress’i güncelleyeceğiz. Bence güzel ve şık bir uygulama . Bu uygulamada scene ve stage ‘miz transparan olacak . Artık Photoshop ‘da hazırladığınız görselin şıklığına göre açılış ekranınız güzelleşecektir. Şimdi benim yaptığım ekranın kodlarını paylaşayım. 

 

import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.control.Separator;
import javafx.scene.image.ImageView;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import javafx.stage.StageStyle;


public class Main extends Application {

    static ProgressBar progressBar;
    static Label infoState;
    static  Stage window;
    public static void main(String[] args) {

    launch(args);

    }

    @Override
    public void start(Stage primaryStage) throws Exception {

            window=primaryStage;
            StackPane root=new StackPane();

            ImageView image=new ImageView(getClass().getResource("image/splash1.png").toExternalForm());


            Label label=new Label(" Electronic Sollutions -  v1.0 ");
            label.setFont(Font.font("Segoe UI", FontWeight.BOLD,null,25));
            label.setTextFill(Color.web("#263238"));

            Separator separator=new Separator();
            separator.setMaxWidth(600d);

            VBox vBox=new VBox();
            vBox.getChildren().addAll(label,separator);
            vBox.setSpacing(40);
            vBox.setAlignment(Pos.TOP_CENTER);
            vBox.setPadding(new Insets(80,0,0,0));

            Region spacer=new Region();
            vBox.setVgrow(spacer,Priority.ALWAYS);

            progressBar=new ProgressBar(0);
            progressBar.setPrefSize(400,5);
            progressBar.setStyle("-fx-background-color: #455A64");
            infoState=new Label();
            infoState.setTextFill(Color.web("#424242"));
            infoState.setPadding(new Insets(-160,0,0,0));


            ImageView imageElectronic=new ImageView(getClass().getResource("image/electronic.png").toExternalForm());



            vBox.getChildren().addAll(imageElectronic,spacer,infoState,progressBar);



            root.getChildren().addAll(image,vBox);
            root.setBackground(new Background(new BackgroundFill(Color.TRANSPARENT, CornerRadii.EMPTY,Insets.EMPTY)));
            Scene scene=new Scene(root);
            scene.setFill(Color.TRANSPARENT);
            scene.getStylesheets().add("styles/style.css");
            window.initStyle(StageStyle.TRANSPARENT);
            window.setScene(scene);
            progressCalculate();
            window.show();
    }


    static void progressCalculate(){

        Thread thProgress=new Thread(new Runnable() {
            @Override
            public void run() {

                for(int i=0;i<101;i++){

                    System.out.println("thread çalşıtı");
                    final double j=i;
                    Platform.runLater(new Runnable() {
                        @Override
                        public void run() {
                            progressBar.setProgress(j/100);
                            if(j>0 && j<20){
                                infoState.setText("Program Başlatılıyor.....");
                            }
                            if(j>21 && j<50){

                                infoState.setText("Veritabanından bilgiler okunuyor ....");
                            }
                            if(j>51 && j<98){
                                infoState.setText("Arayüz Hazırlanıyor.....");
                            }
                            if(j>98){window.close();}
                        }
                    });

                    try {
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                }


            }
        });

        thProgress.setDaemon(true);
        thProgress.start();


    }
}

projede kullandığım resimleri buradan indiribelirisiniz

admin

One Comment

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir