jfxtras - цвет кнопки изменения CalendarPicker

Как изменить цвет каждой кнопки-переключателя в CalendarPicker?
Например, одну кнопку "красную", другую кнопку "желтую" и так далее.


person boop    schedule 31.03.2015    source источник


Ответы (1)


Вы должны быть в состоянии, если вы можете создать для него правило CSS. Кнопки-переключатели — это просто кнопки-переключатели, поэтому они имеют те же функции стилей CSS. Таким образом, правило CSS "#mypicker .toggle-button" должно выбирать их.

Однако для выбора отдельных кнопок потребуется использование чего-то вроде «nth-child», но я считаю, что JavaFX этого не поддерживает. Есть черный ход; переключателям дня присваивается идентификатор «day0», «day1», ... Это независимо от того, скрыта кнопка или нет. https://github.com/JFXtras/jfxtras/blob/8.0/jfxtras-controls/src/main/java/jfxtras/internal/scene/control/skin/CalendarPickerControlSkin.java строка 366

Но это шаткая зависимость. Если у вас есть хороший вариант использования, я, конечно, могу назначить специальный уникальный класс стиля для каждой кнопки.

person tbeernot    schedule 31.03.2015
comment
Как я могу получить отдельный переключатель из CalendarPicker? DayButtons являются частными, и я не могу найти метод Getter - person boop; 31.03.2015
comment
Пример использования: раскрашивайте каждый день календаря, который зависит от типа дня (например, будний день, выходные, праздничные дни, частные праздники, день рождения и т. д.). Каждому переключателю нужен тип и цвет. - person boop; 31.03.2015
comment
Вы не можете добраться до кнопок, что бы обнажить кожу снаружи. Это не то, как должны работать элементы управления в JavaFX. - person tbeernot; 01.04.2015
comment
О вашем варианте использования; что делать, если два типа событий происходят в один и тот же день, например, праздник и день рождения)? Я думаю, вы описываете встречи на целый день в управлении повесткой дня JFXtras. - person tbeernot; 01.04.2015
comment
С вашим ответом я разрешаю это. Каждый узел-переключатель CalendarPicker имеет именованный идентификатор. Невидимые — day0-dayX, а видимые — например, 2015-04-30. С помощью colorpicker.lookup(2015-04-30) я могу найти узел переключателя и изменить стиль с помощью node.setStyle(-fx-base: ‹RGBColor›). - person boop; 01.04.2015