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