MenuButton是JavaFX库的一部分。按下menuMenu时,将显示一个上下文菜单,其中显示了一组项目,用户可以选择任何项目。它通常包含多个菜单项,并且用户一次最多可以选择一个MenuItem。
MenuButton类的构造方法是:
- MenuButton():创建一个新的菜单按钮
- MenuButton(String t):创建带有指定文本的菜单按钮
- MenuButton(String t, Node g):创建带有指定文本的菜单按钮
和图形 - MenuButton(String t, Node g, MenuItem… i)创建具有指定文本,图形和菜单项的菜单按钮
常用方法:
方法 | 说明 |
---|---|
getItems() | 返回菜单按钮的项目 |
getPopupSide() | 了解属性popupSide的方法 |
hide() | 隐藏上下文菜单 |
isShowing() | 获取显示的属性的值。 |
setPopupSide(Side v) | 设置属性popupSide的值。 |
show() | 显示上下文菜单 |
以下示例程序旨在说明MenuButton类:
- 程序创建一个MenuButton并向其中添加MenuItems:将通过名称m创建一个MenuButton,并将3个菜单项m1,m2,m3添加到menuButton m。菜单栏将在场景内创建,而场景又将托管在舞台内。函数setTitle()用于为舞台提供标题。然后创建一个磁贴,在其上调用addChildren()方法以将菜单按钮附加到场景中。最后,调用show()方法以显示最终结果。
// Program to create a menubutton and add menuitems to it 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 MenuButton_1 extends Application { // labels Label l; // launch the application public void start(Stage s) { // set title for the stage s.setTitle("creating MenuButton "); // create a tile pane TilePane r = new TilePane(); // create a label Label l1 = new Label("This is a MenuButton example "); // create a menu button MenuButton m = new MenuButton("menuButton"); // create menuitems MenuItem m1 = new MenuItem("menu item 1"); MenuItem m2 = new MenuItem("menu item 2"); MenuItem m3 = new MenuItem("menu item 3"); // add menu items to menu m.getItems().add(m1); m.getItems().add(m2); m.getItems().add(m3); // create a tilepane TilePane vb = new TilePane(l1, m); // create a scene Scene sc = new Scene(vb, 200, 200); // set the scene s.setScene(sc); s.show(); } public static void main(String args[]) { // launch the application launch(args); } }
输出:
- 程序创建菜单按钮并向其中添加菜单项,还添加事件处理程序以处理事件:将以名称m创建一个menuButton,并将3个菜单项m1,m2,m3添加到menuButton m。菜单栏将在场景内创建,而场景又将托管在舞台内。函数setTitle()用于为舞台提供标题。然后创建一个磁贴,在其上调用addChildren()方法以将菜单按钮附加到场景中。最后,调用show()方法以显示最终结果。将创建事件处理程序,它将处理菜单项的事件。将创建一个标签l2来显示选择了哪个菜单项。
// Program to create a menubutton and add menuitems // to it and also add event handler to handle events import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.*; import javafx.stage.WindowEvent; import javafx.event.EventHandler.*; import javafx.event.EventHandler; import javafx.event.ActionEvent; import javafx.collections.*; import javafx.stage.Stage; import javafx.scene.text.Text.*; import javafx.scene.paint.*; import javafx.scene.text.*; public class MenuButton_2 extends Application { // labels Label l; // launch the application public void start(Stage s) { // set title for the stage s.setTitle("creating MenuButton "); // create a tile pane TilePane r = new TilePane(); // create a label Label l1 = new Label("This is a MenuButton example "); // create a menu MenuButton m = new MenuButton("MenuButton"); // create menuitems MenuItem m1 = new MenuItem("menu item 1"); MenuItem m2 = new MenuItem("menu item 2"); MenuItem m3 = new MenuItem("menu item 3"); // add menu items to menu m.getItems().add(m1); m.getItems().add(m2); m.getItems().add(m3); // label to display the selected menuitem Label l2 = new Label("default menuitem selected"); // create action event EventHandler<ActionEvent> event1 = new EventHandler<ActionEvent>() { public void handle(ActionEvent e) { l2.setText(((MenuItem)e.getSource()).getText() + " selected"); } }; // add action events to the menuitems m1.setOnAction(event1); m3.setOnAction(event1); m2.setOnAction(event1); // create a tilepane TilePane vb = new TilePane(l1); vb.getChildren().add(m); vb.getChildren().add(l2); // create a scene Scene sc = new Scene(vb, 200, 200); // set the scene s.setScene(sc); s.show(); } public static void main(String args[]) { // launch the application launch(args); } }
输出:
注意:以上程序可能无法在在线IDE中运行。请使用离线编译器。
参考:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/MenuButton.html
相关用法
- JavaFX 类 ChoiceBox用法及代码示例
- JavaFX 类 CustomMenuItem用法及代码示例
- JavaFX 类 ChoiceDialog用法及代码示例
- JavaFX 类 TextInputDialog用法及代码示例
- JavaFX 类 Tab用法及代码示例
- JavaFX 类 ProgressIndicator用法及代码示例
- JavaFX 类 ProgressBar用法及代码示例
- JavaFX 类 PasswordField用法及代码示例
- JavaFX 类 TextField用法及代码示例
- JavaFX 类 Pos用法及代码示例
- JavaFX 类 Arc用法及代码示例
- JavaFX 类 Box用法及代码示例
注:本文由纯净天空筛选整理自andrew1234大神的英文原创作品 JavaFX | MenuButton。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。