在TableView javafx中显示之前修改该值

时间:2017-09-28 08:27:03

标签: java javafx view tree

控制器代码

@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);

我想在表格视图中显示之前对数据进行一些操作

喜欢摇摆

tableRow[3] = DateConverter.toString(c.getAdmissionDate());

在摇摆中,我确实喜欢这样,并且效果很好。

但不知道如何在tableview javafx上进行操作。

1 个答案:

答案 0 :(得分:1)

您可能希望在给定列中添加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...));
            }

        };
    }

}

...然后只需在任何想要在tableview中显示日期的地方使用它:

admissionDate.setCellFactory(new LocalDateCellFactory<>());