FXML模板或在javafx中生成占位符的方法
我正在用Java制作一个GUI,通过SPARQL查询获取所需的数据。这个程序是关于练习的,我想为每个练习制作一个包含相关信息的容器(hbox/vbox)。现在的问题是,这个程序看起来非常难看,因为我使用纯javafx生成hbox,代码如下: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<>()
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));
}