在listview JavaFX中显示sql查询结果

在listview JavaFX中显示sql查询结果,java,javafx,Java,Javafx,我试图在JavaFX的listview中显示我的sql查询结果。下面是我的代码,在列表视图中不显示任何内容,显示为空 这里observearraylist()接受字符串列表中的参数,如“hello”、“all”,如我传入的arraylist引用变量。虽然没有显示结果?我错在哪里 代码 ArrayList<String> arr = new ArrayList<>(10); @FXML public void dispalyData(){

我试图在JavaFX的listview中显示我的sql查询结果。下面是我的代码,在列表视图中不显示任何内容,显示为空

这里observearraylist()接受字符串列表中的参数,如“hello”、“all”,如我传入的arraylist引用变量。虽然没有显示结果?我错在哪里

代码

 ArrayList<String> arr = new ArrayList<>(10);

    @FXML
    public void dispalyData(){
        String sql = "SELECT cus_id, cus_name, cus_email FROM customer_detail";

        try{
            Connection conn = DataConnect.connect();
            PreparedStatement pst = conn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            int i=0;
            while(rs.next()){
            arr.add(rs.getInt("cus_id") +"\t"+ rs.getString("cus_name") 
                              +"\t"+ rs.getString("cus_email"));
            }

            System.out.println(Arrays.asList(arr.toArray()));

        }
        catch(SQLException e){
            System.out.println(e.getMessage());
        } 
    }



    ObservableList<String> list = FXCollections.observableArrayList(arr);

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        viewlist.setItems(list);
    }      
ArrayList arr=新的ArrayList(10);
@FXML
公共void dispalyData(){
String sql=“从客户详细信息中选择客户id、客户名称、客户电子邮件”;
试一试{
Connection conn=DataConnect.connect();
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
int i=0;
while(rs.next()){
arr.add(rs.getInt(“客户id”)+“\t”+rs.getString(“客户名称”)
+“\t”+rs.getString(“客户电子邮件”);
}
System.out.println(Arrays.asList(arr.toArray());
}
捕获(SQLE异常){
System.out.println(e.getMessage());
} 
}
ObservableList=FXCollections.observableArrayList(arr);
@凌驾
公共void初始化(URL、ResourceBundle rb){
viewlist.setItems(列表);
}      

在运行方法
displayData
之前,您正在初始化
list
。 您需要在方法中执行此操作。我建议您在
while
循环结束后添加以下行

list=FXCollections.observearraylist(arr)

将参数的元素复制到创建的
可观察列表中。即使使用作为参数传递的对象作为支持列表,修改支持列表也不会触发
ObservableList
的更改事件<代码>列表视图
依赖于这些事件来更新自身

dispalyData
中使用
列表

@FXML
public void dispalyData(){
    String sql = "SELECT cus_id, cus_name, cus_email FROM customer_detail";

    list.clear();
    try{
        Connection conn = DataConnect.connect();
        PreparedStatement pst = conn.prepareStatement(sql);
        ResultSet rs = pst.executeQuery();

        while(rs.next()){
            list.add(rs.getInt("cus_id") +"\t"+ rs.getString("cus_name") 
                          +"\t"+ rs.getString("cus_email"));
        }

        System.out.println(Arrays.asList(list.toArray()));

    } catch(SQLException e){
        System.out.println(e.getMessage());
    } 
}

ObservableList<String> list = FXCollections.observableArrayList();
@FXML
公共void dispalyData(){
String sql=“从客户详细信息中选择客户id、客户名称、客户电子邮件”;
list.clear();
试一试{
Connection conn=DataConnect.connect();
PreparedStatement pst=conn.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
while(rs.next()){
添加(rs.getInt(“cus\u id”)+“\t”+rs.getString(“cus\u名称”)
+“\t”+rs.getString(“客户电子邮件”);
}
System.out.println(Arrays.asList(list.toArray());
}捕获(SQLE异常){
System.out.println(e.getMessage());
} 
}
ObservableList=FXCollections.observableArrayList();

您是否正确地编写了@fxml id?Initialize方法的工作原理与“post constructor”方法类似。您可以初始化FXCollections.observearraylist(arr)从空的arraylist…
FXCollections.observableArrayList(arr)
不引用
arraylist
observablearraylist
,它只是复制元素。您的决定->将项目添加到
可观察的RAYLIST
中。提示:如果您没有声誉,请在问题段落中添加评论