2016-02-03 2 views
0
import javafx.application.Application; 
import javafx.application.Platform; 
import javafx.concurrent.Task; 
import javafx.stage.Stage; 
import javafx.stage.StageStyle; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.layout.FlowPane; 
import javafx.fxml.FXMLLoader; 


public class Main extends Application { 

    public static Stage mainStage; 
    private static Stage homeStage; 
    @Override 
    public void start(final Stage primaryStage) { 

     Application.setUserAgentStylesheet(STYLESHEET_CASPIAN); 
     splashStage(primaryStage); 
     primaryStage.show(); 

     //mainStage(); 
     Task<Void> task = new Task<Void>() { 

      @Override 
      protected Void call() throws Exception { 
       // TODO Auto-generated method stub 
       for (int i = 1; i < 100; i++) { 
        try { 

         System.out.println(i); 
         if(i==99) 
         { 
          primaryStage.hide(); 
          mainStage(); 
          break; 
         } 

         Thread.sleep(100); 

        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

       } 
       return null; 

      } 
     };  

     new Thread(task).start(); 




    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    public static void main(String[] args) { 
     launch(args); 
    } 

    public void mainStage() 
    { 
     try { 

      mainStage = new Stage(StageStyle.DECORATED); 
      FlowPane root = (FlowPane)FXMLLoader.load(getClass().getResource("Sample.fxml")); 
      Scene scene = new Scene(root); 
      scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
      mainStage.setScene(scene); 
      mainStage.show(); 
     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
    public static void homeStage() 
    { 
     try { 
      homeStage = new Stage(StageStyle.DECORATED); 
      Parent root = FXMLLoader.load(Main.class.getResource("Home.fxml")); 
      Scene scene = new Scene(root); 
      homeStage.setResizable(false); 
      homeStage.setScene(scene); 
      homeStage.show(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public void splashStage(Stage primaryStage) 
    { 
     try { 

      primaryStage.initStyle(StageStyle.TRANSPARENT); 
      FlowPane root = (FlowPane)FXMLLoader.load(getClass().getResource("Splash.fxml")); 
      Scene scene = new Scene(root); 
      scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); 
      primaryStage.setScene(scene); 

     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

После i достигает 99, он не будет открывать mainStage и primaryStage не спряталсяПочему эта страница не открывается?

функции детали следующим образом.
splashStage() - SplashScreen
homeStage() - Главный экран
mainStage() - LoginScreen

Что я должен делать?

+0

Вы пробовали использовать Platform.runLater (() -> primaryStage ......), поскольку вам нужно делать такие вещи на JavaFX Application Thread aus docs для упоминания Stage – Inge

+0

да, я пробовал, но не работал. у вас есть идея перенаправить главный экран с экрана всплеска? –

+1

@Keval: Попробуйте еще раз. Я тестировал его, и он работает: 'Platform.runLater (() -> { primaryStage.hide(); mainStage(); });' Если он не работает, вы не указали необходимую информацию чтобы воспроизвести проблему. (Исключение, включая stacktrace, было бы особенно важно, если оно было выбрано) – fabian

ответ

0

вы должны обновлять интерфейс только в потоке GUI javafx.

так оберните свой код в platform.runlater();

Platform.runLater(() -> { 
    primaryStage.hide(); 
    mainStage(); 
}); 

Уход, нужен этот код java 8!

Подробнее here и here. Уход, нужен этот код java 8!

+0

Я пробовал этот код ... Bt Никакого прогресса в всплывающем экране ... после того, как я достиг 99. он откроет экран входа в систему (mainStage()) –

+0

Не может следовать за вами. Итак, этот код работает? –

Смежные вопросы