JavaFX比较使用列表将文本设置为标签的结果集<;标签>;显示空白标签
如何使用数据库中的if-else语句将text设置为labelList。我尝试将查询的结果集与labelList进行比较,以便将文本设置为具有匹配标签Id的标签,但需要在labelList上进行迭代 显示 这是解决此问题的FXML文件JavaFX比较使用列表将文本设置为标签的结果集<;标签>;显示空白标签,javafx,Javafx,如何使用数据库中的if-else语句将text设置为labelList。我尝试将查询的结果集与labelList进行比较,以便将文本设置为具有匹配标签Id的标签,但需要在labelList上进行迭代 显示 这是解决此问题的FXML文件 FXML.fxml <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label?> <?import java
FXML.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<?import java.util.ArrayList?>
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.141" fx:controller="randomvar.FXMLDocumentController">
<VBox layoutX="250.0" layoutY="83.0" spacing="5.0">
<children>
<Label fx:id="labelts" prefWidth="100.0" style="-fx-border-color: gray;" />
<Label fx:id="labeltt" prefWidth="100.0" style="-fx-border-color: gray;" />
<Label fx:id="labeltu" prefWidth="100.0" style="-fx-border-color: gray;" />
<Label fx:id="labeltv" prefWidth="100.0" style="-fx-border-color: gray;" />
<fx:define>
<ArrayList fx:id="labelList" >
<fx:reference source="labelts"/>
<fx:reference source="labeltt"/>
<fx:reference source="labeltu"/>
<fx:reference source="labeltv"/>
</ArrayList>
</fx:define>
</children>
</VBox>
</AnchorPane>
FXML.FXML
这是控制器文件,如何让脚本显示标签id“labelts”,而不是显示“label[id=labelts,styleClass=label]”
FXMLDocumentController
包随机变量;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.util.List;
导入javafx.fxml.fxml;
导入javafx.scene.control.Label;
公共类FXMLDocumentController{
@FXML
私人列表标签;
public void initialize()抛出ClassNotFoundException、SQLException{
连接conn=null;
Class.forName(“org.sqlite.JDBC”);
conn=DriverManager.getConnection(“jdbc:sqlite:C:\\test.db”);
String qry=“选择调用者,从tbldata中将(调用者)计数为总计,其中调用者=?”;
准备好的报表ps_qry=conn.prepareStatement(qry);
ps_qry.设置字符串(1,“ts”);
结果集rs_qry=ps_qry.executeQuery();
while(rs_qry.next()){
字符串名称=rs_qry.getString(“调用方”);
String total=String.valueOf(rs_qry.getInt(“total”);
对于(int i=0;i
此条件始终为false
,因为您使用不同的对象类型:标签
和字符串
:
if (labelList.get(i).equals(name_)) {
在获得id的地方尝试此变体:
if (labelList.get(i).getId().equals(name_)) {
要仅打印标签id,请执行以下操作:
System.out.println(labelList.get(i).getId());
谢谢你,德米特罗。。。我使用您的解决方案如下
for (int i = 0; i < labelList.size(); i++) {
if (labelList.get(i).getId().contains(name_)) {
System.out.println(labelList.get(i).getId());
labelList.get(i).setText(total_);
}
for(int i=0;i
看起来不错,但是使用contains()
有点冒险,因为例如对于namelabelt
您将更新第一个找到的标签,因为labelts
包含labelt
。如果您计划使用与标签ID完全相同的名称,最好使用equals()
。很抱歉,延迟回复..将使用equals()正如你所建议的。
System.out.println(labelList.get(i).getId());
for (int i = 0; i < labelList.size(); i++) {
if (labelList.get(i).getId().contains(name_)) {
System.out.println(labelList.get(i).getId());
labelList.get(i).setText(total_);
}