读取 JavaFx 应用程序

Read JavaFx Application

我创建了一个小的 javaFx 程序。该程序只显示随机点。现在我想从另一个 class 获取并读取生成的 Stage 并读取坐标。可能吗 ? 我尝试创建一个 class 变量来获取舞台,但它始终为 null。

我添加了一个class变量,并将准备好的Stage对象赋值给该变量。然后我试图从变量中获取 Stage 对象。

public class DCGUI extends Application {
    private Stage primaryStage1;

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

    @Override
    public void start(Stage primaryStage) throws Exception {

        Random r = new Random(64);

        // List<Integer> points = r.ints(1000, 0, 400).boxed().collect(Collectors.toList());

        List<Node> cList = new ArrayList<>();
        Line line = null;
        Circle c = null;

        for (int i = 0; i < 50001; i++) {
            //System.out.println(r.nextInt());
            c = new Circle(r.nextInt(400), r.nextInt(400), 0.0125);
            c.setStroke(Color.RED);
            c.setId(i+"");
            cList.add(c);
        }


        Group group = new Group(cList);

        Scene scene = new Scene(group, 400, 400);

        primaryStage.setScene(scene);
        primaryStage.setTitle("Dynamic Connectivity");

        primaryStage1 = primaryStage;
        primaryStage.show();

}

让我们假设以下代码示例。通过调用 getMainStage() 方法,您可以访问 Stage 对象。

当然,main.fxml文件绑定了MainControllerclass

Main.java

public class Main extends Application{

@Override
public void start(Stage stage) throws Exception {
    FXMLLoader loader = new FXMLLoader("path/to/main.fxml").toFile().toURI().toURL());
    MainController.setMainStage(stage); <---- !
    Parent root = loader.load();
    stage.setScene(new Scene(root, 1400, 850));
    stage.show();
}

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

MainController.java

public class MainController{
    // fxml view elements...
    private static Stage mainStage;
    //...
    public static Stage getMainStage() {
        return mainStage;
    }
}