MenuBar,Menu,MenuItem的使用方法以及快捷键的设置,效果图如下:
小布丁bd.png的图片::
来源::阿里矢量图标库
https://www.iconfont.cn/collections/detail?spm=a313x.7781069.1998910419.dc64b3430&cid=31871
package sample;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.Event;
import javafx.event.EventHandler;
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 Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane ap = new AnchorPane();
ap.setStyle("-fx-background-color: antiquewhite");
//菜单栏
// menubar,
MenuBar menuBar = new MenuBar();
// menu,
Menu menu1 = new Menu("MENU1");
menu1.setOnShowing(new EventHandler<Event>() {//menu1的单击事件
@Override
public void handle(Event event) {
System.out.println("menu1.setOnShowing");
}
});
menu1.setOnHiding(new EventHandler<Event>() {//menu1的单击事件,只在有item的情况下才会触发
@Override
public void handle(Event event) {
System.out.println("menu1.setOnHiding");
}
});
Menu menu2 = new Menu("MENU2");
Menu menu3 = new Menu("MENU3");
Menu menu4 = new Menu("MENU4");
menuBar.getMenus().addAll(menu1, menu2, menu3, menu4);//只有四个的情况下有点短,变长的代码如下
//ap.widthProperty().addListene
// menuitem
MenuItem item1 = new MenuItem("item1");
item1.setOnAction(new EventHandler<ActionEvent>() {//item1的单击事件
@Override
public void handle(ActionEvent event) {
System.out.println("item1");
}
});
MenuItem item2 = new MenuItem("item2");
item2.setOnAction(new EventHandler<ActionEvent>() {//item2的单击事件
@Override
public void handle(ActionEvent event) {
System.out.println("item2");
}
});
MenuItem item3 = new MenuItem("小布丁",new ImageView("icon/bd.png"));
item3.setAccelerator(KeyCombination.valueOf("ctrl+k"));//快捷键设置
item3.setOnAction(new EventHandler<ActionEvent>() {//item3的单击事件
@Override
public void handle(ActionEvent event) {
System.out.println("item3--小布丁");
}
});
MenuItem item4 = new MenuItem("item4");
MenuItem item5 = new MenuItem("item5");
MenuItem item6 = new MenuItem("item6");
menu1.getItems().addAll(item1,item2,item3);
menu2.getItems().addAll(item4,item5,item6);
ap.getChildren().addAll(menuBar);
Scene scene = new Scene(ap);
primaryStage.setScene(scene);
primaryStage.setTitle("Java FX - MenuBar,Menu,MenuItem ");
primaryStage.setWidth(500);
primaryStage.setHeight(300);
primaryStage.show();
menuBar.setPrefWidth(primaryStage.getWidth());
ap.widthProperty().addListener(new ChangeListener<Number>() {//menubar的长度随着框的长度改变
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
menuBar.setPrefWidth(primaryStage.getWidth());
}
});
}
}