MenuButton是JavaFX库的一部分。按下菜单按钮时,会显示一个上下文菜单,其中显示一组项目,用户可以选择任何项目。它通常包含多个菜单项,用户一次最多可以选择一个菜单项。 MenuButton类的构造函数是:
null
- 菜单按钮() :创建一个新的菜单按钮
- 菜单按钮(字符串t) :创建带有指定文本的菜单按钮
- 菜单按钮(字符串t,节点g) :创建带有指定文本的菜单按钮 和图形
- 菜单按钮(字符串t、节点g、菜单项…i) 使用指定的文本、图形和菜单项创建菜单按钮
常用方法:
方法 | 解释 |
---|---|
getItems() | 返回菜单按钮的项目 |
GetPopUpper() | 获取财产的价值 |
隐藏 | 隐藏关联菜单 |
isShowing() | 获取显示的属性的值。 |
上(v侧) | 设置属性的值。 |
show() | 显示关联菜单 |
下面的程序演示了MenuButton类:
- 程序创建菜单按钮并向其添加菜单项 :将以名称m创建一个菜单按钮,并将3个菜单项m1、m2、m3添加到菜单按钮m。该菜单栏将在场景内创建,而场景又将在舞台内托管。函数setTitle()用于为舞台提供标题。然后创建一个tilepane,在该tilepane上调用addChildren()方法将菜单按钮附加到场景中。最后,调用show()方法来显示最终结果。
JAVA
// 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创建一个菜单按钮,并将3个菜单项m1、m2、m3添加到菜单按钮m。该菜单栏将在场景内创建,而场景又将在舞台内托管。函数setTitle()用于为舞台提供标题。然后创建一个tilepane,在该tilepane上调用addChildren()方法将菜单按钮附加到场景中。最后,调用show()方法来显示最终结果。将创建事件处理程序来处理菜单项的事件。将创建一个标签l2,以显示选择了哪个菜单项。
JAVA
// 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
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END