【发布时间】:2022-11-13 03:12:56
【问题描述】:
我想在窗口内创建多个 fxml 对象,使用一次 fxml 中的代码。但它们不止一次出现。 这是我的控制器代码:
public class HelloController {
@FXML
private AnchorPane plot = new AnchorPane();
@FXML
void AddPlotBlock(ActionEvent event) {
this.plot.setMinHeight(110.0D);
this.plot.setMinWidth(250.0D);
this.plot.setStyle("-fx-background-color: grey");
}
和 FXML:
<AnchorPane maxHeight="-1.0" maxWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS" style="-fx-background-color: #301934;">
<children>
<AnchorPane fx:id="plot"/>
</children>
</AnchorPane>
【问题讨论】:
-
目前还不清楚你在这里做什么。 FXML和你描述的有什么关系?如果您想在
addPlotBlock()方法中添加新块,则该方法应创建一个新的AnchorPane(直接在代码中或通过加载 FXML)。这些应该添加到哪个容器(FXML 中定义的根AnchorPane,FXML 中定义的称为plot的单个子AnchorPane,或其他)?它是总是初始化注释@FXML的内容不正确。 -
这听起来像是您需要用代码而不是 FXML 来做的事情。
-
另外,我不确定您是否将事物布置在网格中。如果你想看看
GridPane和/或TilePane。 -
@James_D首先我想用root创建AnchorPane,但我不知道如何显示我的小部件。如果我只是声明锚窗格,它不会显示在屏幕上,所以我发现如果我在 FXML 中声明对象,我可以显示我的小部件及其工作,但仅适用于一个小部件而不是成倍增加,所以如果你能告诉如何显示控制器类中的小部件。我知道如果在应用程序类中创建循环它可以工作,但对我来说它在控制器中不起作用。