JavaFX 动态地将标签添加到窗格,在 fxml 文件中定义
Posted
技术标签:
【中文标题】JavaFX 动态地将标签添加到窗格,在 fxml 文件中定义【英文标题】:JavaFX dynamycly add labels to pane, defined in fxml file 【发布时间】:2016-06-03 13:21:57 【问题描述】:我的 fxml 文件中有 BorderPane。而且我需要从我的控制器类中的代码中将标签添加到它的中心。据我了解,我必须在 initialize()
方法中执行此操作,但我不知道如何实现这一点。
P.S. 我不想在 fxml 文件中静态添加它们,因为它们的数量每次都不同,可能是 5 或可能是 20。在这种情况下,我必须添加它们最大数量并使它们不可见。但我认为这不是最好的决定。
【问题讨论】:
你可能不得不在没有 fxml 的情况下这样做,它会容易得多。使用 fxml,这并非不可能(因为我不知道您有什么场景),但是您可以尝试将它们添加到像 ArrayList 这样的灵活集合中(添加您想要列出的任何标签,然后遍历数组列表添加任何标签存在于其中)。当然,可能有更好的方法来做到这一点,这是我一开始就想到的方法。 【参考方案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 文件。现在一切正常。以上是关于JavaFX 动态地将标签添加到窗格,在 fxml 文件中定义的主要内容,如果未能解决你的问题,请参考以下文章