相关疑难解决方法(0)

传递参数JavaFX FXML

如何将参数传递给javafx中的辅助窗口?有没有办法与相应的控制器通信?

例如:用户从a中选择一个客户,TableView并打开一个新窗口,显示客户的信息.

Stage newStage = new Stage();
try 
{
    AnchorPane page = (AnchorPane) FXMLLoader.load(HectorGestion.class.getResource(fxmlResource));
    Scene scene = new Scene(page);
    newStage.setScene(scene);
    newStage.setTitle(windowTitle);
    newStage.setResizable(isResizable);
    if(showRightAway) 
    {
        newStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

newStage将是新窗口.问题是,我找不到告诉控制器在哪里查找客户信息的方法(通过传递id作为参数).

有任何想法吗?

parameters dependency-injection javafx parameter-passing fxml

180
推荐指数
4
解决办法
16万
查看次数

以编程方式设置控制器时,"没有为顶级元素指定控制器"

我有一个FXML文件,其中包含带有onMouseClicked属性的按钮.我没有在FXML中设置一个控制器,因为我有构造函数注入我想要提供给Controller的数据.

  <Button mnemonicParsing="false" onMouseClicked="#newWidgetRequestButtonClicked" text="New Widget..." />
Run Code Online (Sandbox Code Playgroud)

我以编程方式设置Controller,我的控制器包含FXML中指定的方法.Controller函数执行,一切正常.

FXMLLoader loader = new FXMLLoader(getClass().getResource("MainView.fxml"));
MyController controller = new MyController(...);
loader.setController(controller);
Run Code Online (Sandbox Code Playgroud)

我的问题在于IntelliJ检查.fxml文件.每次出现函数引用时,它都会报告"错误:(45,54)没有为顶级元素指定控制器".我正在查看IntelliJ的检查规则,并且在JavaFX部分中没有看到此规则.同样,程序构建并运行得很好,因此它不是真正的编译错误.我想禁用此错误通知.

我怎样才能避免这个错误?

java javafx intellij-idea

9
推荐指数
2
解决办法
6982
查看次数