Controller 代码
@Override
public void initialize(URL url, ResourceBundle rb) {
try {
Connection con = db.connect();
list = FXCollections.observableArrayList();
ResultSet rs = con.createStatement().executeQuery("Select * from Student");
while (rs.next()) {
list.add(new Student(rs.getInt(1), rs.getString(2),new java.util.Date(rs.getDate(3).getTime()) ));
}
} catch (SQLException ex) {
Logger.getLogger(DisplayAllStudentController.class.getName()).log(Level.SEVERE, null, ex);
}
studentID.setCellValueFactory(new PropertyValueFactory<>("studentID"));
name.setCellValueFactory(new PropertyValueFactory<>("name"));
admissionDate.setCellValueFactory(new PropertyValueFactory<>("admissionDate"))
tableView.setItems(null);
tableView.setItems(list);
我想在表格 View 中显示之前对数据进行一些操作
喜欢 Swing
tableRow[3] = DateConverter.toString(c.getAdmissionDate());
在 Swing 中,我确实喜欢这个,而且效果非常好。
但不知道如何在tableview javafx上进行操作。
最佳答案
您可能需要添加 CellFactory到给定的列(不要与 CellValueFactory 混合)。您没有提到您到底想对哪些数据做什么,但如果您想以自己的方式将日期格式化为字符串,您可以编写一个类,例如:
public class LocalDateCellFactory<T> implements Callback<TableColumn<T, LocalDate>, TableCell<T, LocalDate>> {
@Override
public TableCell<T, LocalDate> call(TableColumn<T, LocalDate> col) {
return new TableCell<T, LocalDate>() {
@Override
protected void updateItem(LocalDate item, boolean empty) {
super.updateItem(item, empty);
if ((item == null) || empty) {
setText(null);
return;
}
setText(item.format(...yourOwnFormat...));
}
};
}
}
...然后在您想要在表格 View 中显示日期的任何地方使用它:
admissionDate.setCellFactory(new LocalDateCellFactory<>());
关于java - 修改TableView javafx中显示前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46464391/