JavaFX |自定义菜单项
CustomMenuItem 是 JavaFX 库的一部分。 CustomMenuItem 允许不同类型的节点作为其菜单项。 customMenuItem 的有用属性之一是 hideOnClick。此属性说明当用户单击菜单项时是否应隐藏菜单。
CustomMenuItem 的构造函数:
- CustomMenuItem(Node n) : 创建一个带有指定节点的菜单项
- CustomMenuItem(Node n, boolean b) : 创建一个带有节点的菜单项并在指定的点击属性上隐藏
常用方法:
method explanation getContent() gets the value of the property content isHideOnClick() gets the value of the property hideOnClick setHideOnClick(boolean v) sets the value of the property hideOnClick setContent(Node v) sets the node as the content for the menu item
下面的程序将说明 CustomMenuItem 的使用:
- 程序创建自定义菜单项并将其添加到菜单:该程序创建一个由名称 menubar 指示的菜单栏。将创建一个名为 m 的菜单,并将 3 个自定义菜单项 menuitem_1、menuitem_2、menuitem_3 添加到菜单中,并将菜单添加到菜单栏。菜单栏将在场景内创建,而场景又将托管在舞台内。函数setTitle() 用于为舞台提供标题。然后创建一个 VBox,调用 addChildren() 方法将菜单栏附加到场景中。最后调用 show() 方法显示最终结果。 Custom MenuItems 将包含一个按钮、标签和一个复选框。
Java
// Program to create a custom menu items and add it to the menu
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.collections.*;
import javafx.stage.Stage;
import javafx.scene.text.Text.*;
import javafx.scene.paint.*;
import javafx.scene.text.*;
public class CustomMenuItem_1 extends Application {
// Launch the application
public void start(Stage stage)
{
// Set title for the stage
stage.setTitle("creating CustomMenuItem ");
// Create a tile pane
TilePane r = new TilePane();
// Create a label
Label description_label =
new Label("This is a CustomMenuItem example ");
// Create a menu
Menu menu = new Menu("Menu");
// Create menuitems
CustomMenuItem menuitem_1 =
new CustomMenuItem(new Button("MenuItem 1"));
CustomMenuItem menuitem_2 =
new CustomMenuItem(new Label("MenuItem 2"));
CustomMenuItem menuitem_3 =
new CustomMenuItem(new CheckBox("MenuItem 3"));
// Add menu items to menu
menu.getItems().add(menuitem_1);
menu.getItems().add(menuitem_2);
menu.getItems().add(menuitem_3);
// Create a menubar
MenuBar menubar = new MenuBar();
// Add menu to menubar
menubar.getMenus().add(menu);
// Create a VBox
VBox vbox = new VBox(menubar);
// Create a scene
Scene scene = new Scene(vbox, 200, 200);
// Set the scene
stage.setScene(scene);
stage.show();
}
public static void main(String args[])
{
// Launch the application
launch(args);
}
}
Java
// Program to create custom menu items and
// Add it to the menu and use the property hide on click
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.collections.*;
import javafx.stage.Stage;
import javafx.scene.text.Text.*;
import javafx.scene.paint.*;
import javafx.scene.text.*;
public class CustomMenuItem_2 extends Application {
// Launch the application
public void start(Stage stage)
{
// Set title for the stage
stage.setTitle("creating CustomMenuItem ");
// Create a tile pane
TilePane r = new TilePane();
// Create a label
Label description_label =
new Label("This is a CustomMenuItem example ");
// Create a menu
Menu menu = new Menu("Menu");
// Create menuitems
CustomMenuItem menuitem_1 =
new CustomMenuItem(new Button("MenuItem 1"));
CustomMenuItem menuitem_2 =
new CustomMenuItem(new Slider());
CustomMenuItem menuitem_3 =
new CustomMenuItem(new CheckBox("MenuItem 3"));
CustomMenuItem menuitem_4 =
new CustomMenuItem(new ChoiceBox(FXCollections
.observableArrayList("choice 1",
"choice 2", "choice 3")));
// Cet hide on click property
menuitem_2.setHideOnClick(false);
menuitem_4.setHideOnClick(false);
menuitem_1.setHideOnClick(true);
menuitem_3.setHideOnClick(true);
// Add menu items to menu
menu.getItems().add(menuitem_1);
menu.getItems().add(menuitem_2);
menu.getItems().add(menuitem_3);
menu.getItems().add(menuitem_4);
// Create a menubar
MenuBar menubar = new MenuBar();
// Add menu to menubar
menubar.getMenus().add(menu);
// Create a VBox
VBox vbox = new VBox(menubar);
// Create a scene
Scene scene = new Scene(vbox, 200, 200);
// Cet the scene
stage.setScene(scene);
stage.show();
}
public static void main(String args[])
{
// Launch the application
launch(args);
}
}
- 输出:
- 创建自定义菜单项并将其添加到菜单并使用属性 hide on click的程序:该程序创建一个由名称 menubar 指示的菜单栏。将创建一个名为 m 的菜单,并将 4 个自定义菜单项 menuitem_1、menitem_2、menuitem_3、menuitem_4 添加到菜单中,并将菜单添加到菜单栏。菜单栏将在场景内创建,而场景又将托管在舞台内。函数setTitle() 用于为舞台提供标题。然后创建一个 VBox,调用 addChildren() 方法将菜单栏附加到场景中。最后调用 show() 方法显示最终结果。 CustonMenuItems 将包含一个按钮、一个滑块、一个复选框和一个选择框。自定义 menuitems_2 和 menuitems_4 的点击时隐藏属性将设置为 false,而 menuitem_1 和 menuitems_3 将设置为 true。点击 menuitem_2 和 menuitem_4 不会在点击时消失。
Java
// Program to create custom menu items and
// Add it to the menu and use the property hide on click
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.collections.*;
import javafx.stage.Stage;
import javafx.scene.text.Text.*;
import javafx.scene.paint.*;
import javafx.scene.text.*;
public class CustomMenuItem_2 extends Application {
// Launch the application
public void start(Stage stage)
{
// Set title for the stage
stage.setTitle("creating CustomMenuItem ");
// Create a tile pane
TilePane r = new TilePane();
// Create a label
Label description_label =
new Label("This is a CustomMenuItem example ");
// Create a menu
Menu menu = new Menu("Menu");
// Create menuitems
CustomMenuItem menuitem_1 =
new CustomMenuItem(new Button("MenuItem 1"));
CustomMenuItem menuitem_2 =
new CustomMenuItem(new Slider());
CustomMenuItem menuitem_3 =
new CustomMenuItem(new CheckBox("MenuItem 3"));
CustomMenuItem menuitem_4 =
new CustomMenuItem(new ChoiceBox(FXCollections
.observableArrayList("choice 1",
"choice 2", "choice 3")));
// Cet hide on click property
menuitem_2.setHideOnClick(false);
menuitem_4.setHideOnClick(false);
menuitem_1.setHideOnClick(true);
menuitem_3.setHideOnClick(true);
// Add menu items to menu
menu.getItems().add(menuitem_1);
menu.getItems().add(menuitem_2);
menu.getItems().add(menuitem_3);
menu.getItems().add(menuitem_4);
// Create a menubar
MenuBar menubar = new MenuBar();
// Add menu to menubar
menubar.getMenus().add(menu);
// Create a VBox
VBox vbox = new VBox(menubar);
// Create a scene
Scene scene = new Scene(vbox, 200, 200);
// Cet the scene
stage.setScene(scene);
stage.show();
}
public static void main(String args[])
{
// Launch the application
launch(args);
}
}
- 输出:
注意:以上程序可能无法在在线 IDE 中运行,请使用离线编译器。
参考: https://docs.oracle.com/javafx/2/api/javafx/scene/control/CustomMenuItem.html