當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。