我有一个在FXML中设置如下的MenuBar:
<MenuBar VBox.vgrow="NEVER">
<menus>
<Menu mnemonicParsing="true" text="_File">
<items>
<MenuItem mnemonicParsing="true" text="_New Project"/>
<MenuItem mnemonicParsing="true" text="_Open…"/>
<MenuItem mnemonicParsing="false" text="Quit"/>
</items>
</Menu>
</menus>
</MenuBar>
这会产生如下菜单:
我已使用以下CSS成功设置了MenuBar
和Menu
文件的样式:
.menu-bar { /* The menu bar itself */ }
.menu { /* The File menu item */ }
.menu:showing { /* menu when it's being shown (activated) */ }
.menu .label { /* Styles the text on a menu item */ }
.menu:showing .label { /* Styles the text on a menu item when activated */ }
但是,我无法设置显示的菜单样式。
我已经尝试将其视为ContextMenu:
.context-menu {
-fx-background-color: red;
}
什么都不做(它不是ContextMenu,所以这里没什么大不了的。)
我尝试过menu-item
和menu-button
样式:
.menu-button,
.menu-item {
-fx-background-color: red;
}
这会更改菜单(文件),但不会更改菜单项或显示的菜单。
我尝试选择名为.items
的 子结构 ,但这似乎不存在。
为了帮助澄清我想要设计哪些元素,我添加了这张图片,其中概述了我希望设计的组件:
答案 0 :(得分:6)
我想你忘记了-fx-skin
中的.context-menu
财产了
关注How to style menu button and menu items。
答案 1 :(得分:0)
.menu-bar {
-fx-background-color: black ;
-fx-opacity: 0.5;
-fx-border-width: 2.0;
}
.menu-bar .label {
-fx-font-size: 14.0 pt;
-fx-font-family: "Bookman Old Style";
-fx-text-fill: white;
-fx-font-weight: bold;
-fx-padding: 10.0px;
}
.menu-bar .menu-button:hover, .menu-bar .menu-button:focused, .menu-bar .menu-button:showing {
-fx-background: black ;
-fx-opacity: 0.5;
-fx-text-fill: white;
}
.menu-item {
-fx-padding: 0.0em 0.0em 0.0em 0.0em;
-fx-text-fill: black;
-fx-background: darkgray ;
}
.menu-item .label{
-fx-font-size: 14.0 pt;
-fx-text-fill: black;
}
.menu-item .label:hover{
-fx-font-size: 14.0 pt;
-fx-background: black ;
-fx-text-fill: white;
}
.context-menu {
-fx-skin: "com.sun.javafx.scene.control.skin.ContextMenuSkin";
-fx-background-color:white ;
-fx-border-width: 0.2px;
-fx-border-color: black;
/** -fx-background-insets: 0.0, 1.0, 2.0;
-fx-background-radius: 0.0 6.0 6.0 6.0, 0.0 5.0 5.0 5.0, 0.0 4.0 4.0 4.0;
-fx-padding: 0.333333em 0.083333em 0.666667em 0.083333em;
-fx-opacity: 0.9;*/
}