JavaFXでカレンダー表示プログラムを作る(DatePickerのポップアップ利用)(続々々) - torutkのブログ の続きです。
積み残した色設定である、曜日によって色を変えるに取り組みました。
CSSの定義には、曜日ごとのセレクターはないので、CSSだけでは曜日ごとに色を変えることができません。
そこで、Javaプログラム側で、日付のセルに曜日に応じたCSSスタイルクラスを設定します。そして、CSS定義で曜日に対応したCSSのセレクターで色を付けるようにしました。
Javaプログラム側で日付セルにCSSスタイルクラスを設定
Nodeクラスには、setStyleClassメソッドでスタイルクラスを設定することができます。
DatePickerのsetDayCellFactoryメソッドに日付セルを生成するファクトリを登録することができるので、ファクトリに曜日に応じたスタイルクラスを追加することでCSS定義で曜日ごとに色を付けることができるようになります。
DatePicker datePicker = new DatePicker(LocalDate.now()); // (1) datePicker.setDayCellFactory(picker -> new DateCell() { // (2) @Override public void updateItem(LocalDate item, boolean empty) { // (3) super.updateItem(item, empty); getStyleClass().add(DayOfWeek.from(item).getDisplayName(TextStyle.FULL, Locale.US).toLowerCase()); } });