gpt4 book ai didi

java - 以编程方式设置 .fxml 文件

转载 作者:行者123 更新时间:2023-12-02 10:58:09 26 4
gpt4 key购买 nike

我习惯于用 JavaFx 编写代码,如下所示,因为这就是我几年前学习的方式。

import javafx.application.Application;
import javafx.scene.*;
import javafx.scene.layout.*;
import javafx.scene.control.*;
import javafx.stage.*;

public class test extends Application {
int c=0;
public static void main(String[] args) {
launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("Demo");
Button b = new Button("Click me");
Label l = new Label("Count=" + c);
VBox v = new VBox(20);
v.getChildren().addAll(b, l);
b.setOnAction(event -> {
c++;
l.setText("Count=" +c);
});
primaryStage.setScene(new Scene(v, 300, 300));
primaryStage.show();
}
}

我最近安装了 JetBrains IntelliJ IDEA Ultimate Edition 2018.1.6,我发现要打开 PrimaryStage 窗口,我需要一个 fxml 文件。

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.GridPane?>
<GridPane alignment="center" hgap="10" vgap="10" xmlns="http://javafx.com/javafx/8.0.121" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Main">
</GridPane>

我必须这样做,

primaryStage.setScene(new Scene(FXMLLoader.load(getClass().getResource("sample.fxml")), 300, 300));

如果我运行第一个代码片段,则不会显示任何内容。但是,如果我用 FXMLLoader.load(getClass().getResources("sample.fxml")) 替换 VBox v,则只会显示一个没有按钮和标签的窗口。 有没有办法可以忽略 fxml 文件的使用?或者我可以使用标准编码方式(第一个代码片段)并让编译器将其更改为 fxml 格式吗?

那是因为我想在网格布局中使用 100x100 的标签,而每个标签都是一个像素。因此,在代码中,很容易运行嵌套 for 循环来使用二维数组初始化和寻址每个标签。但是在 fxml 中初始化 1000 个标签太冗长、费力且不合逻辑。

我从来不需要在 JetBrains IntelliJ IDEA Community Edition 2017.0.2 中执行此类操作。当我升级到 Ultimate Edition 2018.1.6 时,出现这些错误。

最佳答案

您绝对可以在没有 FXML 的情况下将 IntelliJ 与 JavaFX 结合使用。

问:有没有办法可以忽略 fxml 文件的使用?

答:考虑到您在创建新的 JavaFX 项目时引用从 IntelliJ 获得的默认设置的代码片段,是的,它们的默认设置使用 .fxml 但事实并非如此。不需要使用它。您可以删除该 sample.fxml 文件并根据需要重写 start

旁注:没有什么可以阻止您在同一项目中同时使用 fxml 和代码方法,在某些情况下使用 fxml 是更好的方法,而在其他情况下最好使用代码。

问:或者我可以使用标准编码方式(第一个代码片段)并让编译器将其更改为 fxml 格式吗?

答:没有办法将 Java 代码转换为 fxml,但正如我已经说过的,由您决定使用哪一种,您可以甚至在同一个项目中使用它们。

关于java - 以编程方式设置 .fxml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51556872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com