
本文旨在解决JavaFX中如何从TableView的选中行中获取日期值,并将其设置回DatePicker控件的问题。主要介绍了两种方法:一是将TableView的列类型定义为LocalDate,直接获取LocalDate对象;二是将获取到的字符串值解析为LocalDate对象,再设置到DatePicker中。通过本文,开发者可以更有效地处理TableView和DatePicker之间的数据交互。
在JavaFX应用程序开发中,经常会遇到需要从TableView中获取数据,并将其回显到表单控件中的场景。本文将重点介绍如何从TableView的选中单元格中获取DatePicker的值,并将其设置到DatePicker控件中。
问题的核心在于DatePicker控件的setValue()方法期望传入一个LocalDate类型的参数,而不是String类型。因此,我们需要确保从TableView中获取到的数据类型与setValue()方法的要求相匹配。以下提供两种解决方案:
这是最推荐的方案,因为它避免了不必要的类型转换。将tableColDate的类型声明为TableColumn<Booking, LocalDate>,并在PropertyValueFactory中指定正确的属性名。
@FXML
public TableColumn<Booking, LocalDate> tableColDate;
// ...
tableColDate.setCellValueFactory(new PropertyValueFactory<>("date")); // 假设 Booking 类中存在 LocalDate 类型的 date 属性在这种情况下,tableColDate.getCellData(index)将直接返回一个LocalDate对象,可以直接赋值给DatePicker。
@FXML
void getSelected(MouseEvent event) {
index = tableViewBooking.getSelectionModel().getSelectedIndex();
if (index <= -1) {
return;
}
beginTime.setText(tableColSTime.getCellData(index).toString());
endTime.setText(tableColETime.getCellData(index).toString());
beginDate.setValue(tableColDate.getCellData(index)); // 直接设置 LocalDate 值
reminderDesc.setText(tableColName.getCellData(index).toString());
}注意: 确保Booking类中存在一个类型为LocalDate的date属性,并且其getter方法命名为getDate()。
如果由于某些原因无法修改TableColumn的数据类型,或者TableView中的日期数据以字符串形式存储,则需要将获取到的字符串解析为LocalDate对象。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
// ...
@FXML
void getSelected(MouseEvent event) {
index = tableViewBooking.getSelectionModel().getSelectedIndex();
if (index <= -1) {
return;
}
beginTime.setText(tableColSTime.getCellData(index).toString());
endTime.setText(tableColETime.getCellData(index).toString());
String dateString = tableColDate.getCellData(index).toString();
LocalDate localDate = LocalDate.parse(dateString, DateTimeFormatter.ISO_LOCAL_DATE); // 使用合适的日期格式
beginDate.setValue(localDate);
reminderDesc.setText(tableColName.getCellData(index).toString());
}注意事项:
String dateString = tableColDate.getCellData(index).toString();
if (dateString != null && !dateString.isEmpty()) {
try {
LocalDate localDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd.MM.yyyy")); // 使用合适的日期格式
beginDate.setValue(localDate);
} catch (Exception e) {
// 处理日期解析异常,例如显示错误消息
e.printStackTrace();
}
} else {
// 处理日期字符串为空的情况,例如将 DatePicker 设置为 null
beginDate.setValue(null);
}本文介绍了两种从TableView选中单元格中获取DatePicker值的方法。第一种方法是将TableColumn的数据类型定义为LocalDate,直接获取LocalDate对象。第二种方法是将获取到的字符串值解析为LocalDate对象,再设置到DatePicker中。推荐使用第一种方法,因为它更加简洁和高效。无论选择哪种方法,都需要确保数据类型匹配,并处理潜在的异常情况。 通过以上方法,可以有效地实现TableView和DatePicker之间的数据交互,提升JavaFX应用程序的用户体验。
以上就是从TableView选中单元格中获取DatePicker值的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号