我应该如何在monthView日历中实现删除功能

时间:2017-10-04 08:39:41

标签: java javafx calendar

如何开始

嗨第一次来这里和业余开发者 我正在使用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

0 个答案:

没有答案