Java FX 菜单背景颜色错误?
Java FX Menu background color bug?
所以我遇到了一个非常奇怪的小问题。我为未修饰的应用程序设置了菜单和菜单栏的样式。如果我将菜单项悬停在上下文菜单中,菜单会将其背景颜色更改为默认颜色 windows.
场景图片(在第二张图片中,我将鼠标悬停在'Models'菜单项上):
有谁知道如何修复蓝色背景?我希望菜单像第一张图片一样具有我的悬停背景。菜单项也应该有自己的背景,如果我没有用鼠标在上面,它不会跳到蓝色。
CSS:
.menu-bar {
-fx-background-color: transparent;
}
.menu {
-fx-label-padding: 3px;
}
.menu .label, .menu-item .label {
-fx-text-fill: #eee;
}
.menu:hover, .menu:focused, .menu:pressed {
-fx-background-color: rgba(0, 0, 0, 0.2);
}
.menu-item:hover {
-fx-background-color: rgba(0, 0, 0, 0.4);
}
.context-menu {
-fx-background-color: rgba(0, 0, 0, 0.3);
}
提前致谢。
将此添加到您的 css
.menu-item:focused {
-fx-background-color : <preferred color>;
}
您正在向 .menu
和 menu-item
添加冗余属性层。尝试只处理相关属性。例如,在您的情况下,menu
需要在 hovered
或 showing
事件中遵循您的着色模式。
所以添加
.menu:hover, .menu:showing{
-fx-background-color: <preferred backgound>;
}
同样只添加 focused
属性 到 menu-item
,因为其余部分共享 context-menu
背景
.menu-item:focused{
-fx-background-color: <preferred background>;
}
查看简单演示截图:
你可以使用
.menu {
-fx-background-color: #FFFFFF;
}
.menu .label {
-fx-text-fill: black;
-fx-font-family: verdana;
-fx-font-size: 11.5px;
}
.menu:hover,
.menu:showing {
-fx-background-color: #CCE8FF;
-fx-text-fill: black;
}
.menu-item {
-fx-background-color: #F2F2F2;
-fx-text-fill: #000000;
-fx-font-family: verdana;
-fx-font-size: 11.4px;
}
.menu-item .label {
-fx-text-fill: #000000;
-fx-font-family: verdana;
}
.menu-item:focused .label {
-fx-text-fill: #000000;
-fx-font-family: verdana;
}
.menu-item:focused {
-fx-background: -fx-accent;
-fx-background-color: #91C9F7;
-fx-text-fill: #000000;
-fx-font-family: verdana;
}
.menu-item:disabled {
-fx-background: -fx-accent;
-fx-text-fill: #000000;
-fx-opacity: 0.9;
-fx-font-family: verdana;
}
.menu-item:focused:disabled {
-fx-background: -fx-accent;
-fx-background-color: lightgray;
-fx-text-fill: #000000;
-fx-font-family: verdana;
-fx-opacity: 0.9;
}
所以我遇到了一个非常奇怪的小问题。我为未修饰的应用程序设置了菜单和菜单栏的样式。如果我将菜单项悬停在上下文菜单中,菜单会将其背景颜色更改为默认颜色 windows.
场景图片(在第二张图片中,我将鼠标悬停在'Models'菜单项上):
有谁知道如何修复蓝色背景?我希望菜单像第一张图片一样具有我的悬停背景。菜单项也应该有自己的背景,如果我没有用鼠标在上面,它不会跳到蓝色。
CSS:
.menu-bar {
-fx-background-color: transparent;
}
.menu {
-fx-label-padding: 3px;
}
.menu .label, .menu-item .label {
-fx-text-fill: #eee;
}
.menu:hover, .menu:focused, .menu:pressed {
-fx-background-color: rgba(0, 0, 0, 0.2);
}
.menu-item:hover {
-fx-background-color: rgba(0, 0, 0, 0.4);
}
.context-menu {
-fx-background-color: rgba(0, 0, 0, 0.3);
}
提前致谢。
将此添加到您的 css
.menu-item:focused {
-fx-background-color : <preferred color>;
}
您正在向 .menu
和 menu-item
添加冗余属性层。尝试只处理相关属性。例如,在您的情况下,menu
需要在 hovered
或 showing
事件中遵循您的着色模式。
所以添加
.menu:hover, .menu:showing{
-fx-background-color: <preferred backgound>;
}
同样只添加 focused
属性 到 menu-item
,因为其余部分共享 context-menu
背景
.menu-item:focused{
-fx-background-color: <preferred background>;
}
查看简单演示截图:
你可以使用
.menu {
-fx-background-color: #FFFFFF;
}
.menu .label {
-fx-text-fill: black;
-fx-font-family: verdana;
-fx-font-size: 11.5px;
}
.menu:hover,
.menu:showing {
-fx-background-color: #CCE8FF;
-fx-text-fill: black;
}
.menu-item {
-fx-background-color: #F2F2F2;
-fx-text-fill: #000000;
-fx-font-family: verdana;
-fx-font-size: 11.4px;
}
.menu-item .label {
-fx-text-fill: #000000;
-fx-font-family: verdana;
}
.menu-item:focused .label {
-fx-text-fill: #000000;
-fx-font-family: verdana;
}
.menu-item:focused {
-fx-background: -fx-accent;
-fx-background-color: #91C9F7;
-fx-text-fill: #000000;
-fx-font-family: verdana;
}
.menu-item:disabled {
-fx-background: -fx-accent;
-fx-text-fill: #000000;
-fx-opacity: 0.9;
-fx-font-family: verdana;
}
.menu-item:focused:disabled {
-fx-background: -fx-accent;
-fx-background-color: lightgray;
-fx-text-fill: #000000;
-fx-font-family: verdana;
-fx-opacity: 0.9;
}