KenobiBastila
KenobiBastila

Reputation: 741

Howto get the correct CSS item for DatePicker (JavaFX11)

how do I change the CSS of month label and year label? they are grayish and I want to change to white. I cant find the CSS for these two items.

enter image description here

Current CSS code of this datepicker:

/**
* https://gist.github.com/maxd/63691840fc372f22f470
*/
.calendar-grid {
    -fx-background-color: rgb(20, 156, 255);
}

.combo-box-popup > .list-view > .placeholder > .label {
    -fx-text-fill: white;
}

.calendar-header {
    -fx-background-color: #1d1d1d;
    -fx-base: #1d1d1d;
    -fx-text-fill: white;
}


.date-picker-popup {
    -fx-text-fill: white;
    -fx-background-color:
        linear-gradient(to bottom,
        derive(-fx-color,-17%),
        derive(-fx-color,-30%)
        ),
        -fx-control-inner-background;
    -fx-background-insets: 0, 1;
    -fx-background-radius: 0;
    -fx-alignment: CENTER; /* VBox */
    -fx-spacing: 0; /* VBox */
    -fx-padding: 0.083333em; /* 1 1 1 1 */
    -fx-effect: dropshadow( gaussian , rgba(0,0,0,0.2) , 12, 0.0 , 0 , 8 );
}

.date-picker > .text-field {
    -fx-text-fill: white;
}

.date-picker-popup > .month-year-pane {
    -fx-background-color: #1d1d1d;
    -fx-text-fill: white;
}

Upvotes: 2

Views: 2266

Answers (2)

William Jarvis
William Jarvis

Reputation: 357

Looking through the source code I found the labels use the spinner-label style class so I think you can just do:

.date-picker .spinner-label {
   -fx-text-fill: white;
}

Upvotes: 0

James_D
James_D

Reputation: 209339

Change the style for the .month-year-pane to


.date-picker-popup > .month-year-pane {
    -fx-base: #1d1d1d ;
    -fx-mark-highlight-color: -fx-light-text-color ;
}

By default, -fx-background-color is set to fx-background, which in turn depends on -fx-base. The default text fill for controls whose text is rendered over a background of -fx-background is automatically chosen depending on the intensity of the background; in this case it will be set to -fx-light-text-color (which defaults to white).

The arrows are rendered in -fx-mark-highlight-color, so setting this to -fx-light-text-color ensures the arrows are the same color as the text. (Probably better is to mimic the ladder for -fx-text-fill.)

A lot of your CSS seems to have no effect. With the changes above, this seems equivalent:

.calendar-grid {
    -fx-background-color: rgb(20, 156, 255);
}


.date-picker > .text-field {
    -fx-text-fill: white;
}

.date-picker-popup > .month-year-pane {
    -fx-base: #1d1d1d ;
    -fx-mark-highlight-color: -fx-light-text-color ;
}

Note that the rule

.date-picker > .text-field {
    -fx-text-fill: white;
}

makes the text in the text field (i.e. the selected date) invisible; I don't know if this is the desired effect.

Upvotes: 3

Related Questions