Как изменить группы ICalendarFX

Я использую календарь JFXtras, по умолчанию у событий есть 24 группы (категории), и я хочу их изменить. это код по умолчанию:

public final static List<AppointmentGroup> DEFAULT_APPOINTMENT_GROUPS = IntStream.range(0, 24)
        .mapToObj(i -> new Agenda.AppointmentGroupImpl()
              .withStyleClass("group" + i)
              .withDescription("group" + (i < 10 ? "0" : "") + i))
        .collect(Collectors.toList());

final public static List<String> CATEGORIES = IntStream.range(0, 24)
        .mapToObj(i -> new String("group" + (i < 10 ? "0" : "") + i))
        .collect(Collectors.toList());

2 ответа

Решение

Хорошо, Назначение говорит Повестке дня, к какой группе оно принадлежит. Этот AppointmentGroup предоставляет класс CSS для использования (для стилизации всех встреч в группе). Таким образом, 24 предопределенных группы просто существуют, потому что в Agenda.css есть соответствующее определение.

https://github.com/JFXtras/jfxtras/blob/8.0/jfxtras-agenda/src/main/resources/jfxtras/internal/scene/control/skin/agenda/Agenda.css Строка 71

.group0 { -fx-background-color: #AC725E; -fx-fill: #AC725E; }
.group1 { -fx-background-color: #D06B64; -fx-fill: #D06B64; }
.group2 { -fx-background-color: #F83A22; -fx-fill: #F83A22; }
...

Поэтому, если вы создаете новый класс AppointmentGroup, установите идентификатор класса стиля (не используйте существующие идентификаторы типа "group0", как это делается в приведенном выше коде, что немного бесполезно), а затем назначьте этот AppointmentGroup для Appointment, Agenda отрендерим его, используя класс style. Затем вам, конечно, нужно определить это в файле CSS.

Вы также можете переопределить стиль существующего group0, group1, ...

Чтобы дать идею..

1: Загрузите ваш CSS-файл

vbox_root.getStylesheets().add("/styles/styles.css");

2: Добавить новый AppointmentGroups

agenda.appointmentGroups().add(new Agenda.AppointmentGroupImpl().withDescription("group24").withStyleClass("group24"));
agenda.appointmentGroups().add(new Agenda.AppointmentGroupImpl().withDescription("group25").withStyleClass("group25"));
agenda.appointmentGroups().add(new Agenda.AppointmentGroupImpl().withDescription("group26").withStyleClass("group26"));
agenda.appointmentGroups().add(new Agenda.AppointmentGroupImpl().withDescription("group27").withStyleClass("group27"));

3: Определите в styles/styles.css ваши стили

.group24 {
    -fx-background-color: #424242;
    -fx-fill: #424242;
}

.group25 {
    -fx-background-color: #CDCDCD;
    -fx-fill: #CDCDCD;
}

.group26 {
    -fx-background-color: #000000;
    -fx-fill: #000000;
}

.group27 {
    -fx-background-color: #000000;
    -fx-fill: #000000;
}
Другие вопросы по тегам