【发布时间】:2018-06-14 16:47:49
【问题描述】:
我正在编写一个显示StringProperty 和ObjectPropery<LocalDate> 值的表的JavaFX 应用程序。当我深入研究表格的工作方式时,似乎我不能使用DatePicker 作为单元格,所以我打算将日期显示为字符串,但是当用户尝试编辑该单元格时,我会捕获该事件并显示一个动态的DatePicker,它将接受一个新的日期值并更新单元格。
现在,我无法显示此动态 DatePicker。
JavaFX:
<TableView fx:id="tableView" editable="true" GridPane.columnIndex="0" GridPane.rowIndex="1">
<columns>
...
<TableColumn fx:id="recDate" onEditStart="#handleChangeDate" prefWidth="100.0" text="Received Date">
<cellValueFactory>
<PropertyValueFactory property="recDate" />
<!-- <DatePicker fx:id="recDatePicker" /> -->
</cellValueFactory>
</TableColumn>
...
Java 8:
@FXML
private void handleChangeDate(CellEditEvent<MissionItem, LocalDate> e) {
final DatePicker dp = new DatePicker(e.getOldValue());
dp.setDisable(false);
dp.setOnAction(event -> {
LocalDate date = dp.getValue();
System.out.println("Selected date: " + date);
});
Platform.runLater(dp::show);
dp.show(); //redundant. Still doesn't work.
System.out.println("fired event");
}
我可以看到fired event,但是DatePicker 永远不会出现。
我的目标是:
- 将表格显示为一组字符串/LocalDates
- 假设单元格本身不能是 DatePicker,这是一个很好的事件处理程序,当用户想要编辑日期单元格时,会显示动态 DatePicker,接受用户输入并更新值。
- 确保这可以扩展到 1000 行。
【问题讨论】:
-
你需要将
DatePicker添加到场景中
标签: java swing javafx datepicker javafx-8