Сделать вертикальную строку меню в JavaFX
С момента моего взаимодействия с компьютером я видел только строку меню только в горизонтальном направлении. Пункта такого меню будет выскакивать вниз. В JavaFX легко создать такое меню с горизонтальной линейкой меню.
Можно ли создать вертикальное меню в JavaFX ? Кроме того, я хочу, чтобы менуэты выскакивали либо влево, либо вправо, а не вниз.
Могу ли я реализовать такое меню моего желания ? Кто-нибудь, пожалуйста, помогите.
1 ответ:
Вы можете использовать
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(); }
Где стиль .css - это
Эти селекторы частично взяты и переопределены из caspian.css . Измените цветовые предпочтения в соответствии с вашими потребностями, и вы также можете удалить стрелки кнопок через 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; }
Comments