FXML模板或在javafx中生成占位符的方法

FXML模板或在javafx中生成占位符的方法,java,user-interface,javafx,fxml,Java,User Interface,Javafx,Fxml,我正在用Java制作一个GUI,通过SPARQL查询获取所需的数据。这个程序是关于练习的,我想为每个练习制作一个包含相关信息的容器(hbox/vbox)。现在的问题是,这个程序看起来非常难看,因为我使用纯javafx生成hbox,代码如下: ResultSet result = Querying.ontologyQuery(Strings.getFeatured()); List<Resource> exerciseList = new ArrayList<>()

我正在用Java制作一个GUI,通过SPARQL查询获取所需的数据。这个程序是关于练习的,我想为每个练习制作一个包含相关信息的容器(hbox/vbox)。现在的问题是,这个程序看起来非常难看,因为我使用纯javafx生成hbox,代码如下:

ResultSet result = Querying.ontologyQuery(Strings.getFeatured());
    List<Resource> exerciseList = new ArrayList<>();
    List<Resource> mainMuscleList = new ArrayList<>();
    List<Literal> equipmentList = new ArrayList<>();
    while (result.hasNext()) {
        QuerySolution qs = result.next();
        Resource exercise = qs.getResource("Exercise");
        Resource mainMuscle = qs.getResource("mainMuscle");
        Literal equipment = qs.getLiteral("Equipment");
        exerciseList.add(exercise);
        mainMuscleList.add(mainMuscle);
        equipmentList.add(equipment);
    }

    for (int i = 0; i < 4; i++) {
        HBox hbox = addHbox();
        vbox.getChildren().add(hbox);
        Label exercise = new Label();
        Label mainMuscle = new Label();
        Label equipment = new Label();

        mainMuscle.setText(mainMuscleList.get(i).getLocalName());
        equipment.setText(equipmentList.get(i).getString());
        exercise.setText(exerciseList.get(i).getLocalName());

        hbox.getChildren().add(exercise);
        hbox.getChildren().add(mainMuscle);
        hbox.getChildren().add(equipment);
ResultSet result=Querying.ontologyQuery(Strings.getFeatured());
List exerciseList=新建ArrayList();
List mainMuscleList=new ArrayList();
List equipmentList=新的ArrayList();
while(result.hasNext()){
QuerySolution qs=result.next();
资源练习=qs.getResource(“练习”);
Resource mainmurse=qs.getResource(“mainmurse”);
文字设备=qs.getLiteral(“设备”);
练习列表。添加(练习);
主肌肉列表。添加(主肌肉);
设备清单。添加(设备);
}
对于(int i=0;i<4;i++){
HBox HBox=addHbox();
vbox.getChildren().add(hbox);
标签练习=新标签();
标签mainMuscle=新标签();
标签设备=新标签();
mainMuscleList.get(i.getLocalName());
setText(equipmentList.get(i).getString());
setText(exerciseList.get(i.getLocalName());
hbox.getChildren().add(练习);
hbox.getChildren().add(mainmurse);
hbox.getChildren().add(设备);
我想我要问的是,是否可以在fxml中创建一个模板,并将SPARQL查询中的信息部署到“模板”中的占位符中。有关如何进行此操作的任何帮助都将提供给您,您可以使用(另请参阅)

基本上,你能做到

<?xml ... ?>
<?import javafx.scene.layout.HBox ?>
<?import javafx.scene.control.Label ?>

<fx:root type="HBox">
    <Label fx:id="exerciseLabel"/>
    <Label fx:id="mainMuscleLabel"/>
    <Label fx:id="equipmentLabel"/>
</fx:root>
然后当然:

ResultSet result = Querying.ontologyQuery(Strings.getFeatured());
while (result.hasNext()) {
    QuerySolution qs = result.next();
    Resource exercise = qs.getResource("Exercise");
    Resource mainMuscle = qs.getResource("mainMuscle");
    Literal equipment = qs.getLiteral("Equipment");
    vbox.getChildren().add(new ExerciseView(exercise, mainMuscle, equipment));
}

(如果您不想让数据库代码了解您的UI,也可以对其进行一些简单的修改…。

太好了。谢谢
ResultSet result = Querying.ontologyQuery(Strings.getFeatured());
while (result.hasNext()) {
    QuerySolution qs = result.next();
    Resource exercise = qs.getResource("Exercise");
    Resource mainMuscle = qs.getResource("mainMuscle");
    Literal equipment = qs.getLiteral("Equipment");
    vbox.getChildren().add(new ExerciseView(exercise, mainMuscle, equipment));
}