JavaFX 窗口传值

JavaFX 是一种用于构建富客户端应用程序的 Java 框架。在 JavaFX 应用程序中,我们常常需要在不同的窗口之间传递数据。本文将介绍如何在 JavaFX 窗口之间传递值,并提供代码示例来帮助理解。

传值的方法

在 JavaFX 中,有几种常用的传值方法,包括使用构造函数、使用属性和使用全局变量。

1. 使用构造函数

使用构造函数是一种简单直接的方法来在窗口之间传递值。通过在目标窗口的构造函数中添加参数,我们可以将值传递给目标窗口。下面是一个示例:

public class SourceWindow {

    public void openTargetWindow() {
        String value = "Hello, World!";
        Stage stage = new Stage();
        TargetWindow targetWindow = new TargetWindow(value);
        targetWindow.start(stage);
    }
}

public class TargetWindow extends Application {

    private String value;

    public TargetWindow(String value) {
        this.value = value;
    }

    @Override
    public void start(Stage stage) {
        // 在这里使用传递过来的值
        System.out.println(value);
        // ...
    }
}

在上面的示例中,我们创建了一个名为 SourceWindow 的类,该类在调用 openTargetWindow 方法时打开了一个名为 TargetWindow 的窗口,并将字符串 "Hello, World!" 传递给了 TargetWindow 的构造函数。在 TargetWindow 中,我们通过构造函数将该值存储在 value 属性中,并在 start 方法中使用。

2. 使用属性

使用属性是另一种常见的传递值的方法。在 JavaFX 中,我们可以使用属性来跟踪和传递值。下面是一个示例:

public class SourceWindow {

    public void openTargetWindow() {
        StringProperty value = new SimpleStringProperty("Hello, World!");
        Stage stage = new Stage();
        TargetWindow targetWindow = new TargetWindow();
        targetWindow.setValue(value);
        targetWindow.start(stage);
    }
}

public class TargetWindow extends Application {

    private StringProperty value;

    public void setValue(StringProperty value) {
        this.value = value;
    }

    @Override
    public void start(Stage stage) {
        // 在这里使用传递过来的值
        System.out.println(value.get());
        // ...
    }
}

在上面的示例中,我们创建了一个名为 SourceWindow 的类,该类在调用 openTargetWindow 方法时创建了一个 StringProperty 对象,并将字符串 "Hello, World!" 传递给它。然后,我们创建了一个名为 TargetWindow 的类,并在 TargetWindow 中定义了一个 value 属性,用于存储传递过来的值。在 start 方法中,我们使用 value.get() 方法获取传递过来的值。

3. 使用全局变量

使用全局变量是一种简单但不推荐的传递值的方法。在 JavaFX 中,我们可以使用静态变量来存储和传递值。下面是一个示例:

public class SourceWindow {

    public void openTargetWindow() {
        String value = "Hello, World!";
        Stage stage = new Stage();
        TargetWindow.value = value;
        TargetWindow.start(stage);
    }
}

public class TargetWindow extends Application {

    public static String value;

    @Override
    public void start(Stage stage) {
        // 在这里使用传递过来的值
        System.out.println(value);
        // ...
    }
}

在上面的示例中,我们创建了一个名为 SourceWindow 的类,该类在调用 openTargetWindow 方法时将字符串 "Hello, World!" 赋值给了 TargetWindow 的静态变量 value。然后,我们在 TargetWindowstart 方法中使用该静态变量。

总结

本文介绍了在 JavaFX 窗口之间传递值的几种常见方法,包括使用构造函数、使用属性和使用全局变量。根据实际情况选择合适的方法来传递值,并根据具体需求来选择存储值的方式。希望本文对你理解 JavaFX 窗口传值有所