【问题标题】:JavaFX passing and getting parameters between StageJavaFX 在 Stage 之间传递和获取参数
【发布时间】:2012-12-29 07:18:33
【问题描述】:

我有两个阶段

Stage1 与 Scene1 和自己的 Controller1

Stage2 与另一个 Scene2 和 Controller2

从 Stage1 我用 ShowAndWait 调用 Stage2。
并为隐藏阶段设置 Stage2 侦听器。

从 Stage2.Controller2 中调用隐藏和断点

setOnHiding(new EventHandler<WindowEvent>() {
            @Override
            public void handle(WindowEvent t) {
                System.out.print(t.getSource());
            }
        });

在这种情况下,我如何在这些阶段之间传递参数:
1. stage1 传递到 stage2
2. stage2 将一些数据参数传给 stage1

?

【问题讨论】:

标签: javafx javafx-2 parameter-passing


【解决方案1】:

这是我的解决方案: 我有 2 类 MyStage 和 MyController Stage1、Stage2 应该扩展 MyStage Controller1、Controller2 应该扩展 MyController

Stage2 s2 = new MyStage(data);
s2.show();
result = s2.getResult();

class Stage2 extends Stage{
    private FXMLLoader fxmlLoader;
    private Object data;
    private Object result;

    public Stage(Object data){
        this.data = data;
        ...//do something with data
        getController().initWithData(data);
    }

    Object getResult(){
        return getController().getResult();
    }

    public MyController getController() {
        return (MyController) fxmlLoader.getController();
    }
}

Class MyController{
    public void initWithData(Object data){
    ...//
    }

    public Object getResult(){
    ...//
    return result;
    }

    public void setStage(Stage stage) {
            this.stage = stage;
}

    @FXML
    protected void close() {
            getStage().close();
    }

}

这是通用的,但在使用 fxml 与非 fxml 时,代码会有一些细微的变化。 您可以将阶段引用传递给控制器​​以从另一个控制器关闭阶段。 我现在太困了,希望没有错误。 我稍后会更新

【讨论】:

  • 我使用相同,但我认为可能存在原生解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多