menu - 在 JavaFX 中制作垂直菜单栏

标签 menu javafx javafx-2 menuitem menubar

自从我与电脑打交道以来,我只见过水平方向的菜单栏。此类菜单栏的菜单项将向下弹出。在 JavaFX 中,很容易创建带有水平菜单栏的菜单。

是否可以在 JavaFX 中创建垂直菜单栏?此外,我希望菜单项向左或向右弹出,而不是向下弹出。

我可以实现这样一个我想要的菜单吗?有人请帮忙。

最佳答案

您可以为此利用 MenuButton:

@Override
public void start(Stage primaryStage) {
    MenuButton m = new MenuButton("Eats");
    m.setPrefWidth(100);
    m.setPopupSide(Side.RIGHT);
    m.getItems().addAll(new MenuItem("Burger"), new MenuItem("Hot Dog"));

    MenuButton m2 = new MenuButton("Drinks");
    m2.setPrefWidth(100);
    m2.setPopupSide(Side.RIGHT);
    m2.getItems().addAll(new MenuItem("Juice"), new MenuItem("Milk"));

    VBox root = new VBox();
    root.getChildren().addAll(m, m2);

    Scene scene = new Scene(root, 300, 250);
    scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
    primaryStage.setScene(scene);
    primaryStage.show();
}

style.css 在哪里

.menu-button {
    -fx-skin: "com.sun.javafx.scene.control.skin.MenuButtonSkin";
    -fx-background-color: red, green, green, lightgreen;
    -fx-background-insets: 0 0 -1 0, 0, 1, 2;
    -fx-background-radius: 0;
    -fx-padding: 0.0em; /* 0 */
    -fx-text-fill: -fx-text-base-color;
}

/* TODO workaround for RT-19062 */
.menu-button .label { -fx-text-fill: -fx-text-base-color; }

.menu-button:focused {
    -fx-color: beige;
    -fx-background-color: -fx-focus-color, -fx-outer-border, -fx-inner-border, -fx-body-color;
    -fx-background-insets: -1.4, 0, 1, 2;
    -fx-background-radius: 0;
}

.menu-button:hover {
    -fx-color: darkgreen;
}

.menu-button:armed {
    -fx-color: greenyellow;
}

这些选择器部分取自并覆盖 caspian.css。根据您的需要更改颜色偏好,您也可以通过 css 删除按钮的箭头。

这种方法的缺点是难以制作嵌套的菜单项。

关于menu - 在 JavaFX 中制作垂直菜单栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22658695/

相关文章:

javascript - css 树形菜单在 IE8 中不起作用

css - 试图让 last li 拉伸(stretch)到屏幕边缘

JavaFX setPrefSize 不会更改 vBox 大小

validation - JideFX 验证器不起作用

java - 在 JavaFX FXML 中启动最大化的应用程序窗口无法正常工作

java - 如何将工具提示显示/激活属性绑定(bind)到焦点事件而不是 JavaFX2 中的悬停事件?

java - 如何使用左侧顶部的操作栏夏洛克图标进行操作?

html - 如何将菜单覆盖的背景变成模糊(或 "frosted glass")它所覆盖的内容?

JavaFX - 如何设置默认 Activity 控件

java - 设置自定义javafx ComboBox的值