当前位置: 首页 > 知识库问答 >
问题:

在JavaFX中使用FXML创建标签数组

龚弘业
2023-03-14

实际上,我想使用Javafx中的标签创建一个导航列表。我可以为每个标签分配fx: id并在控制器类中创建标签。

但我想做的是,我想在控制器类中创建一个标签数组,而不是控制器类中的十个标签对象,这是我在场景生成器中创建的。

谁能帮我想个办法。。。

共有1个答案

柴晔
2023-03-14

有些事情在Java中比FXML做得更好。在这种情况下,我根本不会在FXML中创建标签;只需创建将容纳标签的窗格,然后在控制器中创建标签并将其添加到窗格中。

也就是说,可以按照您的要求,使用<代码>

执行以下操作:

<!-- create all the labels as usual -->
<Label fx:id="label1" text="Message 1"/>
<Label fx:id="label2" text="Message 2"/>
<!-- ... -->

<!-- use a define block to define an array list containing the labels: -->
<fx:define>
    <ArrayList fx:id="labelList">
        <fx:reference source="label1" />
        <fx:reference source="label2" /> 
        <!-- ... --> 
    </ArrayList>
</fx:define>

然后在控制器中插入列表:

@FXML
private List<Label> labelList ;

完整示例:

标签测试。fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Label?>
<?import java.util.ArrayList?>

<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="LabelListController">
    <Label  fx:id="label1"/>
    <Label  fx:id="label2"/>
    <Label  fx:id="label3"/>
    <Label  fx:id="label4"/>
    <Label  fx:id="label5"/>
    <Label  fx:id="label6"/>
    <Label  fx:id="label7"/>
    <Label  fx:id="label8"/>
    <Label  fx:id="label9"/>
    <Label  fx:id="label10"/>

    <fx:define>
        <ArrayList fx:id="labelList" >
            <fx:reference source="label1"/>
            <fx:reference source="label2"/>
            <fx:reference source="label3"/>
            <fx:reference source="label4"/>
            <fx:reference source="label5"/>
            <fx:reference source="label6"/>
            <fx:reference source="label7"/>
            <fx:reference source="label8"/>
            <fx:reference source="label9"/>
            <fx:reference source="label10"/>
        </ArrayList>
    </fx:define>
</VBox>

LabelListController。java:

import java.util.List;

import javafx.fxml.FXML;
import javafx.scene.control.Label;


public class LabelListController {
    @FXML
    private List<Label> labelList ;

    public void initialize() {
        int count = 1 ;
        for (Label label : labelList) {
            label.setText("Message " + (count++) );
        }
    }
}

LabelListTest.java:

import java.io.IOException;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class LabelListTest extends Application {

    @Override
    public void start(Stage primaryStage) throws IOException {
        Parent root = FXMLLoader.load(getClass().getResource("LabelListTest.fxml"));
        Scene scene = new Scene(root, 250, 450);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
 类似资料:
  • 我正在用javafx设计一个独立的应用程序(带有scenebuilder 8的FXML),现在我需要在FXML中创建一个CheckBoxTreeItem(查看下图)。 方格树 在搜索时,我得到了一个链接“https://docs.oracle.com/javase/8/scene-builder-2/user-guide/library-panel.htm这有助于我将定制的CheckBoxTree

  • 本文向大家介绍如何使用JavaFX创建标签?,包括了如何使用JavaFX创建标签?的使用技巧和注意事项,需要的朋友参考一下 现场演示 -> 输出结果

  • null 我是否可以从子控制器-b更改父FXML-A中标签的文本?

  • 我在JavaFX中制作了一个版本的风险。现在,为了显示游戏数据,我正在使用标签网格来显示有关每个区域的信息。我现在想在标签上有鼠标点击侦听器,这样我就可以通过点击它们来测试游戏功能,直到我制作了完整的游戏板。除非我尝试在FXML文档中添加侦听器,否则我会收到错误。现在,我正在控制器中声明标签,将它们添加到集合中,以便我可以使用循环绑定每个标签的文本属性,然后将每个标签添加到网格中。然后在FXML中

  • 我花了几个小时寻找如何使用服务号访问Gmail API的答案,发现我不能,除非我使用的是具有域范围授权的谷歌办公套件帐户,我来这里是想问你是否有办法使用上述API和私人帐户实际创建标签。我使用的是Visual Studio 2019和C#。在“developers.google.com”中有一个名为“尝试此API”的工具,我可以使用我的OAuth 2.0很好地创建标签,这里找到的. NET Qui

  • 我有一个FXML文档,其中包含我的JavaFX项目的视觉基础,我想通过使用一个窗格来创建一个自己的Topbar(X、最小值/最大值等等)。但我的程序将有多个页面(场景),为了保持代码干净,我想将自定义Topbar作为一个单独的类(有点像组件对象)。我只是不知道该如何在我使用的FXML基础上实现这个类(我使用的是Scene Builder)。