当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaFX 类 MenuButton用法及代码示例


MenuButton是JavaFX库的一部分。按下menuMenu时,将显示一个上下文菜单,其中显示了一组项目,用户可以选择任何项目。它通常包含多个菜单项,并且用户一次最多可以选择一个MenuItem。

MenuButton类的构造方法是:

  1. MenuButton():创建一个新的菜单按钮
  2. MenuButton(String t):创建带有指定文本的菜单按钮
  3. MenuButton(String t, Node g):创建带有指定文本的菜单按钮
    和图形
  4. MenuButton(String t, Node g, MenuItem… i)创建具有指定文本,图形和菜单项的菜单按钮

常用方法:


方法 说明
getItems() 返回菜单按钮的项目
getPopupSide() 了解属性popupSide的方法
hide() 隐藏上下文菜单
isShowing() 获取显示的属性的值。
setPopupSide(Side v) 设置属性popupSide的值。
show() 显示上下文菜单

以下示例程序旨在说明MenuButton类:

  1. 程序创建一个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); 
        } 
    }

    输出:

  2. 程序创建菜单按钮并向其中添加菜单项,还添加事件处理程序以处理事件:将以名称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



相关用法


注:本文由纯净天空筛选整理自andrew1234大神的英文原创作品 JavaFX | MenuButton。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。