2014-02-20 28 views
10

我有一個菜單欄是設置在FXML如下:如何在CSS中設置JavaFX菜單及其項目?

<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> 

這將產生一個菜單如下:

enter image description here

我已經成功地在風格和MenuBarMenu使用以下CSS文件

.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 */ } 

但是,我一直無法對顯示的菜單進行設置。

我試圖把它當作一個文本菜單:

.context-menu { 
    -fx-background-color: red; 
} 

不會做任何事情(這不是一個ContextMenu,所以沒有大的驚喜在這裏)。

我試過造型menu-itemmenu-button

.menu-button, 
.menu-item { 
    -fx-background-color: red; 
} 

這改變了菜單(文件),但不包括菜單項或顯示的菜單。

我已經試過選擇稱爲.items但似乎並不存在。

問題

  1. 如何選擇/風格菜單(即持有新建項目的容器,打開...,退出)?
  2. 如何在菜單中選擇/設置每個單獨的MenuItem?

澄清

爲了澄清我期待的風格元素,我已經添加了這一形象,概述了組件,我希望的風格:

enter image description here

+5

你的問題幫助我比答案,thx;) – Chris

+0

可能重複的[如何風格菜單按鈕和菜單項](https://stackoverflow.com/questions/12299162/how-to-style-menu-按鈕和菜單項) –

回答

4

我認爲你忘記了.context-menu中的-fx-skin財產。
按照How to style menu button and menu items

+3

這似乎確實解決了這個問題。非常感謝。你能解釋一下爲什麼'-fx-skin'屬性是必需的嗎? – crush

+0

@crush:沒有必要使用'-fx-skin',看我的答案。但是,如果你仍然感興趣,[官方文檔](https://docs.oracle.com/javafx/2/api/javafx/scene/doc-files/cssref.html)說''-fx-skin定義了Control的Skin的類名。 –

相關問題