相关疑难解决方法(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 文件创建多个实例

一个简单的问题,但我找不到答案。我有一个要多次实例化的 FXML 文件。每个副本都需要它自己的句柄,以便我可以更改其中的数据。假设,这与在您刚刚创建的类上使用“new”关键字完全一样。

到目前为止,在我的尝试中,我已经能够创建 fxml 文件的多个副本,但是只有一个控制器,因此调用方法意味着所有副本都会发生更改。

我是否必须为同一个 fxml 文件的每个副本创建一个新控制器?

提前致谢

编辑

我正在研究这个想法的代码在这里:

JavaFX:在实例化控制器类时传递参数

以防万一一些背景可能会有所帮助:

我有一个场景,我想保存我制作的 FXML 文件的多个实例。在场景中设置一个 FXML 文件很容易,但创建多个 (10-20) 意味着我将拥有 10 到 20 个控制器和 10 到 20 个 FXML 文件实例。有没有更干净的方法来做到这一点?

我的希望是做这样的事情:

public class SampleController implements Initializable {

    @FXML
    Label firstName;

    @FXML
    Label lastName;

    public SampleController(Label firstname, Label lastname) {

        this.firstName = firstname;
        this.lastName = lastname;
    }

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }
}
Run Code Online (Sandbox Code Playgroud)

然后调用类似的东西:

SampleController Row1 = new SampleController("my", "name");
Run Code Online (Sandbox Code Playgroud)

并让此命令将附加的 FXML 文件连同我传递给它的数据一起加载到场景中。但这不起作用,它会因异常而崩溃。

java javafx fxml

2
推荐指数
1
解决办法
646
查看次数

FxmlLoader.load() 不起作用,我不知道为什么。我应该怎么办?

fxmlLoader.load() 不起作用;错误如下。错误中似乎有一些关于 init 方法的内容,但我不知道它指的是什么。Windows 10;英特尔利J;SDK 11;

public class HelloApplication extends Application {
    @Override
    public void start(Stage stage) throws IOException {
        FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
            Scene scene = new Scene(fxmlLoader.load()); //This is line 21
            stage.setTitle("String Checker");
            stage.setScene(scene);
            stage.show();
    }

    public static void main(String[] args){
//        HelloController.readFile();
        launch();
    }

    @Override
    public void stop() throws Exception {
        super.stop();
    }
} 
Run Code Online (Sandbox Code Playgroud)
"C:\Program Files\Amazon Corretto\jdk11.0.15_9\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.1\lib\idea_rt.jar=62142:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2022.1.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\tommy\.m2\repository\org\openjfx\javafx-controls\11.0.2\javafx-controls-11.0.2.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-graphics\11.0.2\javafx-graphics-11.0.2.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-base\11.0.2\javafx-base-11.0.2.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-fxml\11.0.2\javafx-fxml-11.0.2.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-web\11.0.2\javafx-web-11.0.2.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-media\11.0.2\javafx-media-11.0.2.jar;C:\Users\tommy\.m2\repository\org\jetbrains\annotations\13.0\annotations-13.0.jar;C:\Users\tommy\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib-common\1.5.10\kotlin-stdlib-common-1.5.10.jar -p "C:\Users\tommy\.m2\repository\com\github\almasb\fxgl-gameplay\11.17\fxgl-gameplay-11.17.jar;C:\Users\tommy\.m2\repository\org\kordamp\ikonli\ikonli-core\12.3.0\ikonli-core-12.3.0.jar;C:\Users\tommy\.m2\repository\com\dlsc\formsfx\formsfx-core\11.3.2\formsfx-core-11.3.2.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-base\11.0.2\javafx-base-11.0.2-win.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-web\11.0.2\javafx-web-11.0.2-win.jar;C:\Users\zombkiin\Java\L1 Projects\StringChecker\target\classes;C:\Users\tommy\.m2\repository\org\openjfx\javafx-fxml\11.0.2\javafx-fxml-11.0.2-win.jar;C:\Users\tommy\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.12.1\jackson-annotations-2.12.1.jar;C:\Users\tommy\.m2\repository\com\gluonhq\attach\storage\4.0.9\storage-4.0.9.jar;C:\Users\tommy\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.12.1\jackson-databind-2.12.1.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-controls\11.0.2\javafx-controls-11.0.2-win.jar;C:\Users\tommy\.m2\repository\net\synedra\validatorfx\0.2.1\validatorfx-0.2.1.jar;C:\Users\tommy\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.12.1\jackson-core-2.12.1.jar;C:\Users\tommy\.m2\repository\com\gluonhq\attach\lifecycle\4.0.9\lifecycle-4.0.9.jar;C:\Users\tommy\.m2\repository\com\github\almasb\fxgl-scene\11.17\fxgl-scene-11.17.jar;C:\Users\tommy\.m2\repository\com\github\almasb\fxgl\11.17\fxgl-11.17.jar;C:\Users\tommy\.m2\repository\org\controlsfx\controlsfx\11.1.1\controlsfx-11.1.1.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-graphics\11.0.2\javafx-graphics-11.0.2-win.jar;C:\Users\tommy\.m2\repository\org\openjfx\javafx-media\11.0.2\javafx-media-11.0.2-win.jar;C:\Users\tommy\.m2\repository\org\kordamp\ikonli\ikonli-javafx\12.3.0\ikonli-javafx-12.3.0.jar;C:\Users\tommy\.m2\repository\com\github\almasb\fxgl-core\11.17\fxgl-core-11.17.jar;C:\Users\tommy\.m2\repository\com\github\almasb\fxgl-entity\11.17\fxgl-entity-11.17.jar;C:\Users\tommy\.m2\repository\eu\hansolo\tilesfx\11.48\tilesfx-11.48.jar;C:\Users\tommy\.m2\repository\com\gluonhq\attach\audio\4.0.9\audio-4.0.9.jar;C:\Users\tommy\.m2\repository\com\github\almasb\fxgl-io\11.17\fxgl-io-11.17.jar;C:\Users\tommy\.m2\repository\org\jetbrains\kotlin\kotlin-stdlib\1.5.10\kotlin-stdlib-1.5.10-modular.jar;C:\Users\tommy\.m2\repository\com\gluonhq\attach\util\4.0.9\util-4.0.9.jar;C:\Users\tommy\.m2\repository\org\kordamp\bootstrapfx\bootstrapfx-core\0.4.0\bootstrapfx-core-0.4.0.jar" -m com.stringchecker.stringchecker/com.stringchecker.stringchecker.HelloApplication …
Run Code Online (Sandbox Code Playgroud)

java javafx maven fxmlloader

2
推荐指数
1
解决办法
263
查看次数

JavaFX:使用 FXMLLoader 将参数传递给自己的类

编辑:我相信我终于找到了问题的正确答案。

原帖:

我目前正在尝试使用 JavaFX 和 EventBus 系统创建一个应用程序。为此,我必须在实例化其他类时将 EventBus 作为构造函数参数传递给它们。但是我不知道如何在使用 FXMLLoader 加载我的 .fxml 文件的同时执行此操作。

我的代码目前看起来像这样:

主班

public class MyApplication extends Application {

    public void start(Stage stage) throws Exception {
        EventBus eventBus = new EventBus();

       >>> Here would be code that creates an Object of MainView, passing eventBus as constructor argument. <<<

        Scene scene = new Scene(mainView);
        stage.setScene(scene);
        stage.show();
    }

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

}
Run Code Online (Sandbox Code Playgroud)

这个类继承自 BorderPane,我想使用 fxmlLoader 创建它的对象(我想。我不确定它是否像那样工作)

puplic class MainView extends BorderPane {

    private EventBus …
Run Code Online (Sandbox Code Playgroud)

javafx fxml fxmlloader

-1
推荐指数
1
解决办法
62
查看次数