JavaFX桌面应用开发-菜单栏-MenuBar、Menu 、MenuItem

1:MenuBar、Menu 、MenuItem 是什么

如下例子:MenuBar就相当于菜单栏的那个长条 Menu相当于菜单栏的File Edit Source...等选项 MenuItem就是New、Open File等功能选项

  • MenuBar:创建Menu 的底部 Menu需要创建在MenuBar的上面
  • Menu :创建一个可操作的选项
  • MenuItem :创建子菜单

2:代码说明一切

运行结果:

package application;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main6 extends Application{
	
	public static void main(String[] args) {
		
		launch(args);
	}

	@Override
	public void start(Stage primaryStage) throws Exception {
		
		//创建布局类
		AnchorPane anchorPane = new AnchorPane();
		
		//创建MenuBar
		MenuBar menuBar = new MenuBar();
		menuBar.setStyle("-fx-background-color:red");
		
		//创建Menu
		Menu menu1 = new Menu("File");
		Menu menu2 = new Menu("Edit");
		Menu menu3 = new Menu("Project");
		
		//Menu键入到MenuBar
		menuBar.getMenus().addAll(menu1,menu2,menu3);
		
		//创建MenuItem类
		//还可以对MenuItem设置图标
		MenuItem menuItem1 = new MenuItem("New File",new ImageView("./img/icon.png"));
		MenuItem menuItem2 = new MenuItem("Open File");
		//设置menuItem的快捷键
		menuItem2.setAccelerator(KeyCombination.valueOf("SHIFT+M"));
		MenuItem menuItem3 = new MenuItem("Run As Admin");
		MenuItem menuItem4 = new MenuItem("ReBack");
		MenuItem menuItem5 = new MenuItem("New File1");
		
		//将MenuItem放在对应的Menu上
		menu1.getItems().addAll(menuItem1,menuItem2);
		menu2.getItems().addAll(menuItem3,menuItem4);
		menu3.getItems().addAll(menuItem5);
		//将menuBar加入到布局类anchorPane上
		anchorPane.getChildren().add(menuBar);
		
		//创建场景图
		Scene scene = new Scene(anchorPane);
		
		primaryStage.setScene(scene);
		primaryStage.setHeight(400);
		primaryStage.setWidth(500);
		primaryStage.setTitle("菜单栏学习");
		primaryStage.show();
		
	}

}

3:MenuItem上嵌套Menu

效果如下 有一个向右的小箭头 鼠标放上去后会有一个Menu弹出 Menu上会有很多MenuItem

3.1:运行效果

3.2:代码实现

package application;

import java.security.GeneralSecurityException;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

public class Main6 extends Application{
	
	public static void main(String[] args) {
		
		launch(args);
	}

	@Override
	public void start(Stage primaryStage) throws Exception {
		
		//创建布局类
		AnchorPane anchorPane = new AnchorPane();
		
		//创建MenuBar
		MenuBar menuBar = new MenuBar();
		menuBar.setStyle("-fx-background-color:red");
		
		//创建Menu
		Menu menu1 = new Menu("File");
		Menu menu2 = new Menu("Edit");
		Menu menu3 = new Menu("Project");
		
		//Menu键入到MenuBar
		menuBar.getMenus().addAll(menu1,menu2,menu3);
		
		//创建分割线
		SeparatorMenuItem separator1 = new SeparatorMenuItem();
		SeparatorMenuItem separator2 = new SeparatorMenuItem();
		
		//创建MenuItem类
		//还可以对MenuItem设置图标
		MenuItem menuItem1 = new MenuItem("New File",new ImageView("./img/icon.png"));
		MenuItem menuItem2 = new MenuItem("Open File");
		//设置menuItem的快捷键
		menuItem2.setAccelerator(KeyCombination.valueOf("SHIFT+M"));
		MenuItem menuItem3 = new MenuItem("Run As Admin");
		MenuItem menuItem4 = new MenuItem("ReBack");
		MenuItem menuItem5 = new MenuItem("New File1");
		MenuItem menuItem6 = new MenuItem("New File6");
		
		MenuItem menuItem7 = new MenuItem("惊喜1");
		MenuItem menuItem8 = new MenuItem("惊喜2");
		
		//创建Menu
		Menu menuNode = new Menu("点我进入下一层");
		
		menuNode.getItems().addAll(menuItem7,menuItem8);
		
		//将MenuItem放在对应的Menu上
		menu1.getItems().addAll(menuItem1,separator1,menuItem2,separator2,menuItem5,menuNode);//将分割线加进来
		menu2.getItems().addAll(menuItem3,menuItem4);
		menu3.getItems().addAll(menuItem6);
		//将menuBar加入到布局类anchorPane上
		anchorPane.getChildren().add(menuBar);
		
		//创建场景图
		Scene scene = new Scene(anchorPane);
		
		primaryStage.setScene(scene);
		primaryStage.setHeight(400);
		primaryStage.setWidth(500);
		primaryStage.setTitle("菜单栏学习");
		primaryStage.show();
		
	}
}

 

  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的JavaFX二级菜单示例: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; public class TwoLevelMenuExample extends Application { @Override public void start(Stage primaryStage) throws Exception { BorderPane root = new BorderPane(); MenuBar menuBar = new MenuBar(); Menu fileMenu = new Menu("File"); MenuItem openFile = new MenuItem("Open File"); MenuItem saveFile = new MenuItem("Save File"); fileMenu.getItems().addAll(openFile, saveFile); Menu editMenu = new Menu("Edit"); MenuItem cut = new MenuItem("Cut"); MenuItem copy = new MenuItem("Copy"); MenuItem paste = new MenuItem("Paste"); editMenu.getItems().addAll(cut, copy, paste); MenuBar subMenu = new MenuBar(); Menu optionsMenu = new Menu("Options"); MenuItem settings = new MenuItem("Settings"); optionsMenu.getItems().add(settings); subMenu.getMenus().add(optionsMenu); menuBar.getMenus().addAll(fileMenu, editMenu, subMenu); root.setTop(menuBar); Scene scene = new Scene(root, 400, 300); primaryStage.setTitle("Two Level Menu Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 该示例创建了一个包含文件和编辑两个主菜单以及一个选项子菜单的菜单栏。选项子菜单包含一个设置菜单项。当用户单击菜单项时,可以显示相应的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值