菜单是提供给用户的选项或命令的列表,通常菜单包含执行某些操作的项目。菜单的内容称为菜单项。
在JavaFX中,菜单由javafx.scene.control.Menu类表示,菜单项由javafx.scene.control.MenuItem类表示。
MenuItem类从javafx.scene.control.ButtonBase类继承一个名为onAction的属性,该属性的类型为ObjectProperty <EventHandler <ActionEvent >>。该属性表示每当您按下按钮时调用的操作。您可以使用 setOnAction()方法将值设置为此属性。
将操作设置为项目菜单的一种方法是使用OnAction()方法。
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.paint.Color; import javafx.stage.FileChooser; import javafx.stage.Stage; import javafx.stage.FileChooser.ExtensionFilter; public class MenuActionExample extends Application { public void start(Stage stage) { //创建菜单 Menu fileMenu = new Menu("File"); //创建菜单项 MenuItem item1 = new MenuItem("Open Image"); MenuItem item2 = new MenuItem("Clear"); //将所有菜单项添加到菜单 fileMenu.getItems().addAll(item1, item2); //创建文件选择器 FileChooser fileChooser = new FileChooser(); fileChooser.setTitle("Open Image"); fileChooser.getExtensionFilters().addAll(new ExtensionFilter("All Files", "*.*")); //创建图像视图 ImageView imageView = new ImageView(); //设置图像视图参数 imageView.setX(10); imageView.setY(45); imageView.setFitWidth(575); imageView.setFitHeight(300); imageView.setPreserveRatio(true); //处理打开图像的事件 item1.setOnAction(new EventHandler<ActionEvent>() { public void handle(ActionEvent event) { try { //文件file = fileChooser.showOpenDialog(stage); File file = fileChooser.showOpenDialog(stage); InputStream stream = new FileInputStream(file); Image image = new Image(stream); //将图像设置为图像视图 imageView.setImage(image); } catch (FileNotFoundException e) { e.printStackTrace(); } } }); //处理退出菜单项的事件 item2.setOnAction(event -> { imageView.setImage(null); }); //创建菜单 bar and adding menu to it. MenuBar menuBar = new MenuBar(fileMenu); menuBar.setTranslateX(3); menuBar.setTranslateY(3); //设置舞台 Group root = new Group(menuBar, imageView); Scene scene = new Scene(root, 595, 355, Color.BEIGE); stage.setTitle("Menu Example"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }
输出结果