2016-12-17 7 views
1

Когда я меняю сцены на своей сцене с помощью следующего кода, моя сцена меняет размер. Однако кнопка в правом верхнем углу, чтобы максимизировать/минимизировать окна, говорит о том, что этап все еще максимизирован, хотя это явно не так.Продолжить этап, максимизированный после смены сцены

Как я могу сохранить сцену максимально, когда происходит смена сцены?

import javafx.application.Application; 
import javafx.concurrent.Task; 
import javafx.geometry.Pos; 
import javafx.scene.Scene; 
import javafx.scene.control.Label; 
import javafx.scene.control.ScrollPane; 
import javafx.scene.image.Image; 
import javafx.scene.image.ImageView; 
import javafx.scene.layout.StackPane; 
import javafx.scene.layout.VBox; 
import javafx.scene.text.Font; 
import javafx.stage.Stage; 

public class Program2 extends Application { 
    public static void main(String[] args) { 
     launch(args); 
    } 

    @Override 
    public void start(Stage primaryStage) { 
     try { 
      StackPane p = new StackPane(); 
      primaryStage.setTitle("Chart Application"); 
      Label loader = new Label("Loading..."); 
      loader.setGraphic(new ImageView(new Image("https://media.giphy.com/media/FmcNeI0PnsAKs/giphy.gif"))); 
      loader.setFont(new Font(35)); 
      p.setStyle("-fx-background: #FFFFFF;"); 
      p.getChildren().add(loader); 
      StackPane.setAlignment(loader, Pos.CENTER); 

      primaryStage.setScene(new Scene(p)); 
      primaryStage.setMaximized(true); 

      Task<VBox> task = new Task<VBox>() { 
       @Override 
       public VBox call() { 
        VBox result = new VBox(); 
        for(int i = 0; i < 50000; i++) { //Here simply for small delay 
         result.getChildren().add(new Label(Integer.toString(i))); 
        } 
        return result ; 
       } 
      }; 

      task.setOnSucceeded(e -> { 
       VBox result = task.getValue(); 

       ScrollPane scrollPane = new ScrollPane(); 
       scrollPane.setContent(result); 
       scrollPane.setStyle("-fx-background: #FFFFFF;"); 

       primaryStage.setScene(new Scene(scrollPane)); 
      }); 

      new Thread(task).start(); 

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

Поскольку это операционная система конкретный I образ я использую Windows 10 с JDK 8 U112 и JavaFX 8 с е (Fx) Clipse плагин для затмения

+1

Можете ли вы изменить корень существующей сцены вместо смены сцены? –

+0

@James_D Да. Это отлично поработало. спасибо – Dan

ответ

2

Вместо того, чтобы заменить сцены, использование в той же сцене и заменить ее корень:

primaryStage.getScene().setRoot(scrollPane); 

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

  • Нет связанных вопросов^_^