Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个类(JavaFX的控制器类)获取变量_Java_Javafx 2_Javafx_Fxml - Fatal编程技术网

从另一个类(JavaFX的控制器类)获取变量

从另一个类(JavaFX的控制器类)获取变量,java,javafx-2,javafx,fxml,Java,Javafx 2,Javafx,Fxml,我正试图在JavaFX上实现一个游戏。此外,我正在处理一个FXML文件,因此我有一个main类和controller类。我的问题是如何从controller类访问main类的对象。更清楚地说,我将分享一个简单的代码 这是主要课程: public class JavaFXApplication1 extends Application { @Override public void start(Stage primaryStage) throws IOException {

我正试图在
JavaFX
上实现一个游戏。此外,我正在处理一个
FXML
文件,因此我有一个
main
类和
controller
类。我的问题是如何从
controller
类访问
main
类的对象。更清楚地说,我将分享一个简单的代码

这是主要课程:

public class JavaFXApplication1 extends Application {

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

        Parent root = FXMLLoader.load(getClass().getResource("Risk3.fxml"));

        // Main Pane
        BorderPane borderPane = new BorderPane();
        borderPane.setCenter(root);

        // Main scene
        Scene scene = new Scene(borderPane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
例如,我想从
controller
类访问
root
borderPane
,它是:

public class SampleController implements Initializable {

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }
}

我应该将
root
borderPane
设置为全局和静态还是有其他方法可以访问它们?

可以使用
FXML
控制器访问
root
面板

@FXML
像任何组件一样标记

<BorderPane  xmlns:fx="http://javafx.com/fxml" fx:id="root">
    ...
</BorderPane>

...

只需使用
FXML
控制器即可访问
root
面板

@FXML
像任何组件一样标记

<BorderPane  xmlns:fx="http://javafx.com/fxml" fx:id="root">
    ...
</BorderPane>

...

为什么要将从控制器加载的面板包装到BorderPanel中?实际上,我将在地图周围添加文本字段。此外,我将添加一个球员菜单的底部。这就是为什么我选择了border pane并包装了面板。为什么要将从控制器加载的面板包装到BorderPanel中?实际上,我会在地图周围添加文本字段。此外,我将添加一个球员菜单的底部。这就是我选择边框窗格并包装面板的原因。