[英]Javafx switching scenes using different panes
我有 class SceneLibrary,我想用它来切换场景。 当我运行应用程序时,我在 PaneOne private SceneLibrary sceneLibrary = new SceneLibrary();
和 <init> 在 SceneLirary 的错误private Scene sceneOne = new Scene(new PaneOne(),300,500);
. 我不能使用 static 场景。
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 class:
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();
}
});
}
}
我的主要 class:
public class Main extends Application {
private SceneLibrary sceneLibrary = new SceneLibrary();
@Override
public void start(Stage primaryStage) throws Exception{
AnchorPane root = new PaneOne();
primaryStage.setTitle("Hello World");
sceneLibrary.setPrimaryStage(primaryStage);
primaryStage.setScene(new Scene(root, 300, 500));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
分享一个sceneLibrary
的实例:
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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.