Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx使用不同窗格切换场景_Java_Javafx_Scene_Pane - Fatal编程技术网

Javafx使用不同窗格切换场景

Javafx使用不同窗格切换场景,java,javafx,scene,pane,Java,Javafx,Scene,Pane,我有一个类场景库,我想用它来切换场景。当我运行应用程序时,在PaneOneprivate SceneLibrary SceneLibrary=new SceneLibrary()上有错误和错误在场景中private sceneOne=new Scene(new PaneOne(),300500)。我不能使用静态场景 public class SceneLibrary { private Stage primaryStage; private Scene sceneOne = ne

我有一个类场景库,我想用它来切换场景。当我运行应用程序时,在PaneOne
private SceneLibrary SceneLibrary=new SceneLibrary()上有错误错误在场景中
private sceneOne=new Scene(new PaneOne(),300500)。我不能使用静态场景

public class SceneLibrary {
    private Stage primaryStage;
    private Scene sceneOne = new Scene(new PaneOne(),300,500);
    private Scene sceneTwo = new Scene(new PaneTwo(),400,500);

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

    public void switchToOne(){
        primaryStage.setScene(sceneOne);
    }

    public void switchToTwo(){
        primaryStage.setScene(sceneTwo);
    }
}
我的PaneOne课程:

public class PaneOne extends AnchorPane {
    private SceneLibrary sceneLibrary = new SceneLibrary();
    public PaneOne() {
        Button button = new Button();
        this.getChildren().add(button);

        button.setOnAction(new EventHandler<ActionEvent>() {
            public void handle(ActionEvent event) {
                sceneLibrary.switchToTwo();
            }
        });
    }
}

共享
场景库的实例

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        SceneLibrary sceneLibrary = new SceneLibrary();
        sceneLibrary.setPrimaryStage(primaryStage);
        sceneLibrary.switchToOne();//set scene one to the stage 
        primaryStage.show();
    }

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

class PaneOne extends AnchorPane {

    public PaneOne(SceneLibrary sceneLibrary) {
        Button button = new Button("Switch To Scene 2");
        this.getChildren().add(button);
        button.setOnAction(event -> sceneLibrary.switchToTwo());
    }
}

class PaneTwo extends AnchorPane {

    public PaneTwo(SceneLibrary sceneLibrary) {
        Button button = new Button("Switch To Scene 1");
        this.getChildren().add(button);
        button.setOnAction(event -> sceneLibrary.switchToOne());
    }
}

class SceneLibrary {

    private Stage primaryStage;
    private final Scene sceneOne = new Scene(new PaneOne(this),300,500);
    private final Scene sceneTwo = new Scene(new PaneTwo(this),400,500);

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

    public void switchToOne(){
        primaryStage.setScene(sceneOne);
    }

    public void switchToTwo(){
        primaryStage.setScene(sceneTwo);
    }
}
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        SceneLibrary sceneLibrary = new SceneLibrary();
        sceneLibrary.setPrimaryStage(primaryStage);
        sceneLibrary.switchToOne();//set scene one to the stage 
        primaryStage.show();
    }

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

class PaneOne extends AnchorPane {

    public PaneOne(SceneLibrary sceneLibrary) {
        Button button = new Button("Switch To Scene 2");
        this.getChildren().add(button);
        button.setOnAction(event -> sceneLibrary.switchToTwo());
    }
}

class PaneTwo extends AnchorPane {

    public PaneTwo(SceneLibrary sceneLibrary) {
        Button button = new Button("Switch To Scene 1");
        this.getChildren().add(button);
        button.setOnAction(event -> sceneLibrary.switchToOne());
    }
}

class SceneLibrary {

    private Stage primaryStage;
    private final Scene sceneOne = new Scene(new PaneOne(this),300,500);
    private final Scene sceneTwo = new Scene(new PaneTwo(this),400,500);

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

    public void switchToOne(){
        primaryStage.setScene(sceneOne);
    }

    public void switchToTwo(){
        primaryStage.setScene(sceneTwo);
    }
}