2016-12-17 6 views
1

Wenn ich Szenen auf meiner Bühne mit dem folgenden Code ändere, ändert sich meine Bühne. Die Schaltfläche oben rechts zum Maximieren/Minimieren der Fenster sagt jedoch, dass die Bühne immer noch maximiert ist, obwohl dies eindeutig nicht der Fall ist.Halten Sie die Bühne nach dem Szenenwechsel maximiert

Wie kann ich die Bühne maximiert halten, wenn ein Szenenwechsel passiert?

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(); 
     } 
    } 
} 

Wie dies funktioniert Bildsystemspezifischen I ich Windows benutze 10 mit JDK 8 U112 und JavaFX 8 mit dem e (fx) clipse Plugin für Eclipse

+1

Können Sie die Wurzel der bestehenden Szene ändern, anstatt die Szene zu ändern? –

+0

@James_D Ja. Das hat super funktioniert. Vielen Dank – Dan

Antwort

2

statt Ersetzen der Szene, die Verwendung die gleiche Szene und ersetzen Sie ihre Wurzel:

primaryStage.getScene().setRoot(scrollPane); 
Verwandte Themen