如何在CSS中设置JavaFX菜单及其项目的样式?

cru*_*ush 11 css javafx menu javafx-2 javafx-8

我有一个在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>
Run Code Online (Sandbox Code Playgroud)

这会产生如下菜单:

在此输入图像描述

我用以下CSS 成功设置MenuBarMenu 文件文件的样式:

.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 */ }
Run Code Online (Sandbox Code Playgroud)

但是,我无法设置显示的菜单样式.

我已经尝试将其视为ContextMenu:

.context-menu {
    -fx-background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

什么都不做(它不是ContextMenu,所以这里没什么大惊喜).

我尝试过造型menu-item并且menu-button:

.menu-button,
.menu-item {
    -fx-background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

这会更改菜单(文件),但不会更改菜单项或显示的菜单.

我已经尝试选择一个被调用的子结构,.items但似乎并不存在.

问题

  1. 如何选择/设置菜单样式(持有New Project,Open ...,Quit的容器)?
  2. 如何在菜单中选择/样式化每个MenuItem?

澄清

为了帮助澄清我想要样式的元素,我添加了这个图像,其中概述了我希望样式的组件:

在此输入图像描述

Ulu*_*Biy 6

我想你忘记了这个-fx-skin房产.context-menu.
按照如何设置样式菜单按钮和菜单项.

  • 这似乎解决了这个问题.非常感谢.你能解释为什么需要`-fx-skin`属性吗? (3认同)