Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期不显示在TableView中_Java_Sql Server_Javafx - Fatal编程技术网

Java 日期不显示在TableView中

Java 日期不显示在TableView中,java,sql-server,javafx,Java,Sql Server,Javafx,我在sql server中有6列,其中5列显示在TableView中,6列为日期格式,未显示。显示任何内容都没有错误 public class PTable { String P_total,P_sold,P_correct,P_remaining,P_faulty; LocalDate P_addedDate; public PTable(String P_total,String P_sold,String P_correct,String P_remaining,S

我在sql server中有6列,其中5列显示在TableView中,6列为日期格式,未显示。显示任何内容都没有错误

public class PTable {
    String P_total,P_sold,P_correct,P_remaining,P_faulty;
    LocalDate P_addedDate;
    public PTable(String P_total,String P_sold,String P_correct,String P_remaining,String P_faulty,LocalDate P_addedDate){
        this.P_total=P_total;
        this.P_sold = P_sold;
        this.P_correct=P_correct;
        this.P_remaining=P_remaining;
        this.P_faulty=P_faulty;
        this.P_addedDate=P_addedDate;
    }
    public String getP_total(){
        return P_total;
    }
    public void setP_total(String P_total){
        this.P_total=P_total;
    }
    public String getP_sold(){
        return P_sold;
    }
    public void setP_sold(String P_sold){
        this.P_sold=P_sold;
    }
    public String getP_correct(){
        return P_correct;
    }
    public void setP_correct(String P_correct){
        this.P_correct=P_correct;
    }
    public String getP_remaining(){
        return P_remaining;
    }
    public void setP_remaining(String P_remaining){
        this.P_remaining=P_remaining;
    }
    public String getP_faulty(){
        return P_faulty;
    }
    public void setP_faulty(String P_faulty){
        this.P_faulty=P_faulty;
    }
    public LocalDate getP_addedDate(){
        return P_addedDate;
    }
    public void setP_addedDate(LocalDate P_addedDate){
        this.P_addedDate=P_addedDate;
    }
}
我的控制器类::

ObservableList<PTable> ob = FXCollections.observableArrayList();
ResultSet rs = conn.createStatement().executeQuery("select * from Products");
    while(rs.next()){
        ob.add(new PTable(rs.getString("P_total"),rs.getString("P_sold"),rs.getString("P_correct"),rs.getString("P_remaining"),rs.getString("P_faulty"),rs.getDate("P_addedDate").toLocalDate()));
    }
    TProduct_cln.setCellValueFactory(new PropertyValueFactory<PTable , String>("P_total"));
    SProduct_cln.setCellValueFactory(new PropertyValueFactory<PTable , String>("P_sold"));
    CProduct_col.setCellValueFactory(new PropertyValueFactory<PTable , String>("P_correct"));
    RProduct_cln.setCellValueFactory(new PropertyValueFactory<PTable , String>("P_remaining"));
    FProduct_cln.setCellValueFactory(new PropertyValueFactory<PTable , String>("P_faulty"));
    date_cln.setCellValueFactory(new PropertyValueFactory<PTable , LocalDate>("P_addedDate"));
    tbl_product.setItems(ob);
ObservableList ob=FXCollections.observableAryList();
ResultSet rs=conn.createStatement().executeQuery(“从产品中选择*);
while(rs.next()){
ob.add(新PTable(rs.getString(“P_total”)、rs.getString(“P_selled”)、rs.getString(“P_correct”)、rs.getString(“P_剩余”)、rs.getString(“P_故障”)、rs.getDate(“P_addedate”).toLocalDate());
}
t产品类别setCellValueFactory(新属性价值工厂(“P_total”);
SProduct_cln.setCellValueFactory(新财产价值工厂(“P_出售”));
CProduct_col.setCellValueFactory(新属性值工厂(“P_correct”));
RProduct_cln.setCellValueFactory(新的PropertyValueFactory(“P_剩余”));
FPProduct_cln.setCellValueFactory(新属性ValueFactory(“P_故障”));
日期?cln.setCellValueFactory(新属性值工厂(“P_addedDate”);
tbl_产品设置项(ob);
请帮我做这件事。我已经试了两天,仍然没有找到解决办法。
谢谢

我在您的代码中没有看到
CellFactory
。如果是这种情况,请尝试以下方法:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
date_cln.setCellFactory(column -> new TableCell<PTable, LocalDate>() {
    @Override
    protected void updateItem(LocalDate date, boolean empty) {
        super.updateItem(date, empty);
        if (empty) {
            setText("");
        } else {
            setText(formatter.format(date));
        }
    }
});
DateTimeFormatter formatter=DateTimeFormatter.of模式(“dd-MM-yyyy”);
日期\u cln.setCellFactory(列->新表单元格(){
@凌驾
受保护的void updateItem(LocalDate,布尔值为空){
super.updateItem(日期,空);
if(空){
setText(“”);
}否则{
setText(formatter.format(date));
}
}
});

问题解决了。我在代码中更改了两件事 首先将LocalDate更改为String。 然后rs.getDate(“P_addedDate”).toLocalDate()将其更改为rs.getDate(“P_addedDate”).toString();
它解决了我的问题,认为它可能会帮助其他人。

我不知道它是否解决了您的问题,但由于JDBC 4.2,您应该使用
rs.getObject(“p_addedDate”,LocalDate.class)
。隔离问题。问题是您没有从结果集中获取值,还是tableview没有显示它?请并坚持java命名约定!谢谢你的回复,但问题已经解决了。这不是解决办法,它只是抹黑了一个会再次产生影响的问题。。将所有数据作为字符串是错误的,在表示任何数据类型时做一些合理的事情是celltrue的任务,但是OP应该看到一些东西,即使没有格式化单元格,对不对;)