Javafx-更改primaryStage上的场景

时间:2018-05-15 12:07:58

标签: java javafx javafx-8

这是我试图运行的当前代码。

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

public class class1 extends Application{
public Stage primaryStage; 


@Override
public void start(Stage primaryStage){
    this.primaryStage= primaryStage;
    // TODO Auto-generated method stub
    GridPane pane = new GridPane();
    Label t = new Label("test");
    Button btn = new Button("hello");
    pane.getChildren().addAll(t,btn);
    btn.setOnAction(e->{
        class2 c = new class2();
        primaryStage.setScene(c.getScene());

    });


    Scene scene = new Scene(pane);
     primaryStage.setTitle("Chillax");
     primaryStage.setScene(scene);
     primaryStage.show();
}


public static void main(String[] args) {
    // TODO Auto-generated method stub
    launch(args);
}


}

这是1级,当我点击按钮时,它会在class2上更改为Scene而没有问题

import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class class2 extends class1 {
public Scene getScene() {
    GridPane pane2 = new GridPane();
    Label t = new Label("test222");
    Button btn = new Button("hello22");
    pane2.getChildren().addAll(t,btn);
    btn.setOnAction(e->{
        class3 c3 = new class3();
        c3.getScene();
        primaryStage.setScene(c3.getScene());

    });
    Scene c2 = new Scene(pane2);
    return c2;

}




}

现在我想通过从class3获取场景来对class2做同样的事情但是我无法找到解决问题的方法,因为如果我点击第2课上的按钮就会弹出错误信息。

import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;

public class class3 extends class2 {
    public Scene getScene() {
    GridPane pane3 = new GridPane();
    Label t = new Label("test222");
    Button btn = new Button("hello22222");
    pane3.getChildren().addAll(t,btn);

    Scene c3 = new Scene(pane3);
    return c3;

}


}

任何其他有效的方法来解决这个问题? 想法是从scene1到scene2再到scene3。

0 个答案:

没有答案