【问题标题】:JavaFX dynamycly add labels to pane, defined in fxml fileJavaFX 动态地将标签添加到窗格,在 fxml 文件中定义
【发布时间】:2023-03-16 01:09:01
【问题描述】:

我的 fxml 文件中有 BorderPane。而且我需要从我的控制器类中的代码中将标签添加到它的中心。据我了解,我必须在 initialize() 方法中执行此操作,但我不知道如何实现这一点。

P.S. 我不想在 fxml 文件中静态添加它们,因为它们的数量每次都不同,可能是 5 或可能是 20。在这种情况下,我必须添加它们最大数量并使它们不可见。但我认为这不是最好的决定。

【问题讨论】:

  • 你可能不得不在没有 fxml 的情况下这样做,它会容易得多。使用 fxml,这并非不可能(因为我不知道您有什么场景),但是您可以尝试将它们添加到像 ArrayList 这样的灵活集合中(添加您想要列出的任何标签,然后遍历数组列表添加任何标签存在于其中)。当然,可能有更好的方法来做到这一点,这是我一开始就想到的方法。

标签: java javafx fxml borderpane


【解决方案1】:

您需要将您的控制器绑定到您的 FXML,然后创建一个将被调用的初始化方法。您需要使用 @FXML 注释对其进行注释。

您还需要使用@FXML 注释连接边框窗格。这里我假设它是 myBorderPane。

@FXML
private void initialize() {
    //Create the label
    Label myLabel = new Label("Will go in the Center Pane"); 
    myBorderPane.setCenter(myLabel);
}

显然,这只是将一个标签硬编码到您的窗格中。您可能需要在此处创建一些逻辑来生成您需要的内容。您还需要注意布局等。

希望这会为您指明正确的方向。

【讨论】:

  • 但是,伙计,我已经尝试过这样的变体,但一无所获有我的代码:` public class Controller { @FXML BorderPane pane; @FXML private void initialize() { pane.setCenter(new Label("XYZ")); } } `
  • 如果您尝试过代码但它不起作用,您需要将它放在您的问题中。显示足够的代码(FXML、控制器和主类)来重现问题。
  • 我发现我的错误 - 我没有将控制器作为窗格的参数添加到 fxml 文件。现在一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
相关资源
最近更新 更多