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();
		
	}
}

猜你喜欢

转载自blog.csdn.net/hujyhfwfh2/article/details/89278003
今日推荐