JavaFX8 DatePicker按钮大小更改

Rya*_*Kim 5 css java javafx datepicker

我正在使用DatePicker具有默认样式的JavaFX .

但是,我想Scene通过添加将CSS样式应用于此中的所有按钮scene.getStyleSheets().add("abc.css").

它工作正常,我申请:

Button {
    -fx-font-size: 20;
    -fx-font-family: "Arial";
    -fx-pref-width: 300;
    -fx-pref-height: 60;
    -fx-background-radius: 16px;
    -fx-background-color: lightgrey;
    -fx-text-fill: black;
}
Run Code Online (Sandbox Code Playgroud)

但是当我添加时会出现问题DatePicker.它DatePicker有自己的箭头按钮,可以切换月份或年份.我想使用默认样式,DatePicker但因为它在我的下面Scene,它的按钮从CSS获得按钮样式...(胖按钮)

有没有办法让我从DatePicker使用默认DatePicker样式中删除按钮样式?我不想从这个场景中删除所有样式,因为我必须自己应用所有其余的样式.

这是一张照片:

fab*_*ian 1

不幸的是,没有办法阻止样式应用于具有特定祖先的节点。这需要你

  • 想出一种方法来限制您的样式所应用的节点,并且不会修改例如的后代DatePicker,或者
  • 将您修改的属性重置为modena.css适用于它们的值。

对于第二个选项,您可以使用

Button {
    -fx-font-size: 20;
    -fx-font-family: "Arial";
    -fx-pref-width: 300;
    -fx-pref-height: 60;
    -fx-background-radius: 16px;
    -fx-background-color: lightgrey;
    -fx-text-fill: black;
}

.date-picker-popup > * > .spinner > .button {
    -fx-font-size: 1em;
    -fx-font-family: "System";
    -fx-pref-width: -1;
    -fx-pref-height: -1;
    -fx-background-color: -fx-outer-border, -fx-inner-border, -fx-body-color;
    -fx-background-radius: 0;
}

.date-picker-popup > * > .spinner > .button:focused {
    -fx-background-color: -fx-focus-color, -fx-inner-border, -fx-body-color, -fx-faint-focus-color, -fx-body-color;
}
Run Code Online (Sandbox Code Playgroud)

但请注意,这需要对每个使用按钮的标准控件执行。添加一种选择您想要设置样式的按钮的方法可能要简单得多。例如,您可以将样式类添加到您想要设置样式的按钮:

button.getStyleClass().add("my-style");
Run Code Online (Sandbox Code Playgroud)
button.getStyleClass().add("my-style");
Run Code Online (Sandbox Code Playgroud)