JavaFX8日期选择器按钮大小更改

JavaFX8日期选择器按钮大小更改,java,css,javafx,datepicker,Java,Css,Javafx,Datepicker,我使用的JavaFXDatePicker具有默认样式 但是,我想通过添加Scene.getStyleSheets().add(“abc.CSS”)将CSS样式应用于此场景中的所有按钮 它运行良好,我申请: 按钮{ -fx字体大小:20; -fx字体系列:“Arial”; -外汇储备宽度:300; -外汇储备高度:60; -fx背景半径:16px; -背景色:浅灰色; -fx文本填充:黑色; } 但是,当我添加日期选择器时,问题就出现了。DatePicker有自己的箭头按钮,用于切换月份或年份。

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

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

它运行良好,我申请:

按钮{
-fx字体大小:20;
-fx字体系列:“Arial”;
-外汇储备宽度:300;
-外汇储备高度:60;
-fx背景半径:16px;
-背景色:浅灰色;
-fx文本填充:黑色;
}
但是,当我添加
日期选择器时,问题就出现了。
DatePicker
有自己的箭头按钮,用于切换月份或年份。我想为这个
日期选择器使用默认样式
,但由于它位于我的
场景下
,它的按钮从CSS中获取按钮样式。。。(胖按钮)

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

这是一张照片:


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

  • 想出一种方法来限制您的样式所应用的节点,这种方法不会修改节点的中心变量,例如,
    日期选择器
    ,或
  • 将修改的属性重置为适用于它们的值
    modena.css
对于第二个选项,您可以使用

按钮{
-fx字体大小:20;
-fx字体系列:“Arial”;
-外汇储备宽度:300;
-外汇储备高度:60;
-fx背景半径:16px;
-背景色:浅灰色;
-fx文本填充:黑色;
}
.date picker弹出窗口>*>.spinner>.button{
-fx字体大小:1em;
-fx字体系列:“系统”;
-外汇储备宽度:-1;
-外汇储备高度:-1;
-fx背景色:-fx外边框,-fx内边框,-fx主体颜色;
-背景半径:0;
}
.date picker弹出窗口>*>.spinner>。按钮:聚焦{
-fx背景色:-fx焦点颜色,-fx内边框,-fx主体颜色,-fx微弱焦点颜色,-fx主体颜色;
}
但是请注意,这需要对每个使用按钮的标准控件执行。添加一种选择要设置样式的按钮的方法可能会简单得多。例如,您可以向要设置样式的按钮添加样式类:

button.getStyleClass().add("my-style");
Button.my-style{
-fx字体大小:20;
-fx字体系列:“Arial”;
-外汇储备宽度:300;
-外汇储备高度:60;
-fx背景半径:16px;
-背景色:浅灰色;
-fx文本填充:黑色;
}

这不是一个绝对正确的解决方案,但作为一种变通方法,您可以继承javaFX样式,用于日期选择器弹出控件

如果您将其添加到abc.css中,按钮将与默认按钮一样正常

.date-picker-popup > * > .spinner > .button {
    -fx-background-color: transparent;
    -fx-background-radius: 0;
    -fx-pref-width: -1;
    -fx-pref-height: -1;
}

谢谢!正是我想要的!谢谢你详细的回答!