嗨第一次来这里和业余开发者
我正在使用JavaFX开发类似Google月视图日历的日历
使用ObservableArrayList
作为结构来缓存来自数据库的事件并将它们放入GridPane
单元格。与Google相似,每天都可以举办多项活动。结构是这样的
GridPane contains Vbox which contains multiple event labels.
标签调用EventBox
不知道事件的索引是什么,因此我无法使用remove(int index)
从ObservableList
中删除关联事件,那么我应该如何实现此删除功能?
有些好奇:ObservableList
对这类事情有好处吗?
我认为标记事件已取消,从数据库中删除事件并通过调用updateView
更新整个屏幕。该事件仍在列表中,但不再显示。
一些代码:
private void updateView() {
// ...set month and year text
// layout detail of all cells
LocalDate firstDateOfMonth = currentMonth.withDayOfMonth(1);
int firstDayOfWeek = firstDateOfMonth.getDayOfWeek().getValue() % 7;
int indexDay = 0;
for (int i = 0; i < gridView.getRowConstraints().size(); i++) {
for (int j = 0; j < gridView.getColumnConstraints().size(); j++) {
DateCell cell = gridCells[i][j];
LocalDate currentDate = firstDateOfMonth.plusDays(indexDay - firstDayOfWeek);
cell.getChildren().clear();
cell.setDate(currentDate);
setCellDetail(cell);
indexDay++;
}
}
}
private void setCellDetail(DateCell cell) {
// ... setup date header
// main loop to lay events
for (Event event : eventList.getEvents()) {
if (cell.getDate().equals(event.getStart()) && cell.getChildren().size() < 4) {
EventBox eventBox = createEventBox(event);
cell.getChildren().add(eventBox);
}
}
}
程序是这样的: PROGRAM