我有一个JavaFX 2应用程序,我的所有按钮都使用默认样式(灰色渐变)。在应用程序的某些特殊区域,背景颜色为红色,黄色或绿色。在这些领域,我也有按钮。
我不想重新设置所有三种颜色按钮的所有不同状态(正常,悬停,按下),我只想给按钮添加背景色调。这有可能,怎么样?
如果没有,有没有办法轻松地重新设计基本按钮样式,并自动从这种样式派生悬停和按下状态(伪选择器)?
如果那是不可能的,我愿意接受建议。我最重要的目标是避免冗余/重复声明(特别是渐变),以防有人想要稍后添加不同的颜色面板,或者只是改变阴影其中一种背景颜色。
红色面板/按钮的CSS:
#my-red-panel {
-fx-border-width: 1;
-fx-border-radius: 5;
-fx-background-radius: 5;
-fx-smooth: true;
-fx-border-color: rgb(209, 65, 42);
-fx-background-color: rgba(255, 78, 50, 0.89);
}
#my-red-panel .button {
-fx-background: rgba(0, 0, 0, 0); /* Now borders look good, but button is still grey*/
}
到目前为止,我最好的选择是使用半透明渐变,如下所示:
#my-red-panel .button {
-fx-background-color: linear-gradient(rgba(255, 255, 255, 0.3), rgba(0, 0, 0, 0.2));
}
我仍然需要声明每个状态,但至少我可以更改基础颜色而无需修改每个状态。主要问题是这会覆盖按钮的整个外观,所以我希望有更好的东西...: - /
答案 0 :(得分:5)
未经测试,但尝试尝试:
#my-red-panel {
-fx-base: rgba(255, 78, 50, 0.89);
}
或者也许:
#my-red-panel .button {
-fx-base: ... ;
}
取决于您想要的确切效果。
这里的技巧是默认的css(JavaFX2.2的caspian.css或JavaFX8的modena.css)使用一些预定义的查找颜色。您可以挖掘这些来源以了解它们的使用方法。如果为场景图中的节点重新定义这些查找,则新定义将传播到所有子节点。