我有一个 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));
}
我仍然必须声明每个状态,但至少我可以更改底层颜色而不必修改每个状态。主要问题是这会覆盖按钮的整个外观,所以我希望有更好的东西……:-/
最佳答案
未测试,但尝试尝试:
#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)使用一些预定义的查找颜色。你可以挖掘出这些的来源,看看它们是如何使用的。如果您为场景图中的节点重新定义这些查找,新定义将传播到所有子节点。
关于css - 是否有可能在 JavaFX 2 中使用 "tint"按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20661818/