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