Javafx 如何声明tableview的日期值属性
我需要将date属性传递给setCellValueFactory,这是我的Javafx 如何声明tableview的日期值属性,javafx,Javafx,我需要将date属性传递给setCellValueFactory,这是我的Persona类的seter和geter的代码,正确的方法是什么,我想我对正确的声明有一个问题,所以我需要一个真正的方向,我需要在java.sql.date类中声明一些日期,做一些参考?有什么想法吗?。请帮我一点忙 package application; import java.time.LocalDate; import javafx.beans.property.IntegerProperty; impo
Persona类的seter和geter的代码,正确的方法是什么,我想我对正确的声明有一个问题,所以我需要一个真正的方向,我需要在java.sql.date类中声明一些日期,做一些参考?有什么想法吗?。请帮我一点忙
package application;
import java.time.LocalDate;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class Persona {
private StringProperty nombres;
private StringProperty apellidos;
private IntegerProperty id_cliente;
private ObjectProperty <LocalDate>fechacliente;
public Persona ( String nombres, String apellidos, Integer id_cliente, Object fechacliente) {
this.nombres= new SimpleStringProperty (nombres);
this.apellidos= new SimpleStringProperty ( apellidos);
this.id_cliente=new SimpleIntegerProperty (id_cliente);
this.fechacliente= new SimpleObjectProperty<LocalDate>();
}
public Object getFecha() {
return fechacliente.get();
}
public void setFecha(Object fechacliente) {
this.fechacliente=new SimpleObjectProperty<>();
}
public String getNombres() {
return nombres.get();
}
public void setNombres(String nombres) {
this.nombres=new SimpleStringProperty (nombres);
}
public String getApellidos() {
return apellidos.get();
}
public void setApellidos(String apellidos) {
this.apellidos=new SimpleStringProperty ( apellidos);
}
public Integer getId_cliente() {
return id_cliente.get();
}
public void setid_cliente(Integer id_cliente) {
this.id_cliente=new SimpleIntegerProperty (id_cliente);
}
}
这是我用来在tableview中检索数据的方法,但日期不显示
public void seleccionaregistros() {
ObservableList <Persona> data =FXCollections.observableArrayList();
Connection conn=null;{
try {
conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=prueba", "sa", "milkas87");
Statement mostrar=conn.createStatement();
ResultSet rs;
rs= mostrar.executeQuery("select * from cliente");
while ( rs.next() )
{
data.add(new Persona(
rs.getString("nombre"),
rs.getString("apellido"),
rs.getInt("id"),
rs.getDate(4)
));
tablacliente.setItems(data);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
您错误地使用了JavaFX属性。JavaFXbean的属性需要getter、setter(如果可写)和属性getter。另外,setter不应该每次都创建一个新属性;它应该设置现有属性的值
为了简化您的示例,如果我们有一个Person
和一个属性name
,它将如下所示:
public class Person {
private final StringProperty name = new SimpleStringProperty(this, "name");
public Person(String name) {
setName(name);
}
public final void setName(String name) { // setter
this.name.set(name);
}
public final String getName() { // getter
return name.get();
}
public final StringProperty nameProperty() { // property getter
return name;
}
}
注意:如果需要,您仍然可以在构造函数中而不是在字段声明中初始化属性
要在TableView
或TreeTableView
中使用name
属性,只需在cellValueFactory中返回它即可。使用表视图的示例
:
TableView<Person> table = new TableView<>();
TableColumn<Person, String> nameCol = new TableColumn<>("Name");
nameCol.setCellValueFactory(features -> features.getValue().nameProperty());
table.getColumns().add(nameCol);
注意:最好使用java.time
类之一(例如LocalDate
,OffsetDateTime
,等等)
同样,要将其添加到表视图中,它看起来如下所示:
TableView<Person> table = new TableView<>();
TableColumn<Person, Date> clientDateCol= new TableColumn<>("Client Date");
clientDateCol.setCellValueFactory(features -> features.getValue().clientDateProperty());
table.getColumns().add(clientDateCol);
TableView table=newtableview();
TableColumn clientDateCol=新的TableColumn(“客户日期”);
clientDateCol.setCellValueFactory(功能->功能.getValue().clientDateProperty());
table.getColumns().add(clientDateCol);
与您的问题无关:请学习java命名约定并遵守它们(嗯……您的问题中没有被建议这样做吗;)可能重复您为什么不阅读答案?很完美。我这么做了,但是当我发送日期值时,tableview是empy,如何获得正确的格式?我想是的that@JhonMark您的问题将添加一个演示该问题的。
TableView<Person> table = new TableView<>();
TableColumn<Person, String> nameCol = new TableColumn<>("Name");
nameCol.setCellValueFactory(features -> features.getValue().nameProperty());
table.getColumns().add(nameCol);
public class Person {
private final ObjectProperty<Date> clientDate = new SimpleObjectProperty<>(this, "clientDate");
public final void setClientDate(Date clientDate) {
this.clientDate.set(clientDate);
}
public final Date getClientDate() {
return clientDate.get();
}
public final ObjectProperty<Date> clientDateProperty() {
return clientDate;
}
}
TableView<Person> table = new TableView<>();
TableColumn<Person, Date> clientDateCol= new TableColumn<>("Client Date");
clientDateCol.setCellValueFactory(features -> features.getValue().clientDateProperty());
table.getColumns().add(clientDateCol);