Javafx使用不同窗格切换场景
我有一个类场景库,我想用它来切换场景。当我运行应用程序时,在PaneOneJavafx使用不同窗格切换场景,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
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);
}
}