JavaFX 或 FXML。有什么不同?

JavaFX or FXML. What is the difference?

我刚开始学习 javafx 来构建桌面应用程序。但我不明白一件事。这是我的问题: 我们可以通过编写代码来创建一个gui,就像这样:



或者,我们可以使用场景生成器创建图形用户界面,如下所示:


既然有第二种方法,为什么还要写代码,比如这个label或者button放在哪里什么的?

我是新手,不知道第二种方法有没有弱点。

我自己主要使用 FXML,我喜欢 SceneBuilder 的所见即所得方法,但在某些情况下我又回到编码 UI。

例如,我有一个应用程序,用户最多可以回答 10 个问题。这些问题或其数量在编译时是未知的。我在运行时在 GridPane 中为问题创建标签和复选框。 GridPane 是 FXML 布局的一部分。这可以仅在 FXML 中使用 ListView 和自定义 ListCells 完成,但它的工作量要多得多,我不需要 Cell 重用,因为问题太少了。

也可能需要 10x10 个按钮,在 FXML 中放置 100 个按钮并不好玩。我在 Android.

上实现游戏 like this 时使用了它

此外,如果您有许多不同的视图,除了位置差异很小之外都非常相似,您可能希望在代码中创建它们,而不是创建多个几乎相同的 FXML 文件。

I'm new, so i don't know if the second method has any weakness.

如果时间允许,请使用这两种方法分别编写您的UI!

说真的,如果您是新手并且想了解这两种方法的缺陷,通常没有比亲身体验一些场景、掌握这两种工具包并了解您更喜欢哪种方法更好的方法了不同的情况。

在某些情况下,一个人会变得比另一个更好,但 "in-between" 情况通常会归结为个人偏好(如果不仅仅是你在发展,team-based偏好并遵守贵公司的代码风格要求。)