JavaFX8 DatePicker 按钮大小更改

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


但是,我想Scene通过添加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;

}

但是,当我添加DatePicker. DatePicker里面有自己的箭头按钮,可以切换月份或年份。我想为此使用默认样式,DatePicker但由于它在 my 下Scene,它的按钮从 CSS 中获取按钮样式...(胖按钮)


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


这是一张照片:


梦里花落0921
浏览 185回答 2
2回答

萧十郎

这不是一个绝对正确的解决方案,但作为一种解决方法,您可以继承您的 javaFX 样式以进行日期选择器弹出控件如果你把它添加到你的 abc.css 中,按钮会像默认一样正常.date-picker-popup > * > .spinner > .button {     -fx-background-color: transparent;     -fx-background-radius: 0;     -fx-pref-width: -1;     -fx-pref-height: -1;}

GCT1015

不幸的是,没有办法阻止将样式应用于具有特定祖先的节点。这需要你想出一种方法来限制以不修改 eg 的后代的方式应用您的样式的节点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;}但是请注意,需要对每个使用按钮的标准控件执行此操作。添加一种方法来选择您想要设置样式的按钮可能要简单得多。例如,您可以向要设置样式的按钮添加样式类:button.getStyleClass().add("my-style");Button.my-style {    -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;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java