簡體   English   中英

JavaFX改變場景而不是舞台

[英]JavaFX Changing Scene Instead of Stage

我正在制作一個程序並使用JavaFX作為主要的GUI設置。 當我進入每個不同的方法時,我正在打開和關閉每個階段。

這有點令人討厭,因為用戶在完成程序時會有很多屏幕打開和關閉。

我的問題是,有沒有辦法,每次我可以進入我的程序的不同部分而不是打開一個階段,我可以在場景之間切換? 在這種情況下,場景之間切換是否正確? 我需要在方法之間傳遞一個階段嗎?

你可以告訴我,我剛剛開始使用JavaFX,所以我會非常感激一點教訓。

編輯:我已經決定使用JavaFXML更新我的應用程序,但是我很難將一個場景傳遞給我的控制器。 這是我的控制器;

public class MainApp extends Application {

    @FXML
    public Stage primaryStage;

    @FXML
    private AnchorPane rootLayout;

    @FXML
    private JobInterface jInterface;

    @Override
    public void start(Stage primaryStage) {
        primaryStage = new Stage();
        setPrimaryStage(primaryStage);
        initRootLayout();
    }

    @FXML
    public void initRootLayout(){
        try {
            primaryStage = getPrimaryStage();
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("MainInterface.fxml"));
            rootLayout = (AnchorPane) loader.load();        
            Scene scene = new Scene(rootLayout);    
            primaryStage.setScene(scene);
            primaryStage.show();
            setPrimaryStage(primaryStage);
         } catch (IOException e) {
                e.printStackTrace();
         }
    }

    @FXML
    private void setJobLayout(){
        primaryStage = getPrimaryStage();
        jInterface = new JobInterface();
        jInterface.initJobLayout();
        primaryStage.setScene(jInterface.getScene());
    }

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

    public Stage getPrimaryStage() {
        return primaryStage;
    }

    public void setPrimaryStage(Stage primaryStage) {
        this.primaryStage = primaryStage;
    }
}

這是一種使用不同的FXML文件更改場景並嘗試將場景傳遞回控制器的方法;

public class JobInterface {

    private AnchorPane rootLayout;
    private Scene scene;

    public void initJobLayout(){
        try {
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(MainApp.class.getResource("JobInterface.fxml"));
            rootLayout = (AnchorPane) loader.load();
            scene = new Scene(rootLayout);
            setScene(scene);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public Scene getScene() {
        return scene;
    }

    public void setScene(Scene scene) {
        this.scene = scene;
    }   
}

我現在遇到的問題是主應用程序中此行的NullPointerException;

primaryStage.setScene(jInterface.getScene());

關於我哪里出錯的任何想法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM