Search code examples
cssjavafxjavafx-2javafx-8menuitem

How to style menu button and menu items


I tried to change styles in menu button. I could change menu button style but not its menu item. No matter what i try menu item inside menu-button remains unchanged.

.menu-button {
 -fx-background-color:black;
}

.menu-button .label {
 -fx-background-color:black; }

Output looks like this

Now how can i change color that is left out??


Solution

  • MenuButton uses Menu internally and has a similar API. In such way that MenuButton contains MenuItems list just like Menu. So I think you need to try to play with .menu, .menu-button and .menu-item CSS selectors in caspian.css. More specifically with .menu-item.

    EDIT: It seems you need to change the .context-menu too, because the popped up menu of the menuButton is ContextMenu.

    .menu-item .label {
        -fx-text-fill: white;
    }
    
    .menu-item:focused {
         -fx-background-color: darkgray;
    }
    
    .menu-item:focused .label {
        -fx-text-fill: blue;
    }
    
    .context-menu {
        -fx-skin: "com.sun.javafx.scene.control.skin.ContextMenuSkin";
        -fx-background-color: black;
        -fx-background-insets: 0, 1, 2;
        -fx-background-radius: 0 6 6 6, 0 5 5 5, 0 4 4 4;
    /*    -fx-padding: 0.666667em 0.083333em 0.666667em 0.083333em;  8 1 8 1 */
        -fx-padding: 0.333333em 0.083333em 0.666667em 0.083333em; /* 4 1 8 1 */
    }