JavaFX 示例:将操作(行为)设置为菜单项
javafxobject oriented programmingprogramming更新于 2025/6/26 4:37:17
菜单是呈现给用户的选项或命令列表,通常菜单包含执行某些操作的菜单项。菜单的内容称为菜单项。
在 JavaFX 中,菜单由 javafx.scene.control.Menu 类表示,菜单项由 javafx.scene.control.MenuItem 类表示。
将操作设置为 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("打开图片"); fileChooser.getExtensionFilters().addAll(new ExtensionFilter("所有文件", "*.*")); //创建图片视图 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 file= fileChooser.showOpenDialog(stage); File file = fileChooser.showOpenDialog(stage); InputStream stream = new FileInputStream(file); Image image = new Image(stream); //Setting image to the image view imageView.setImage(image); } catch (FileNotFoundException e) { e.printStackTrace(); } } }); //处理退出菜单项的事件 item2.setOnAction(event -> { imageView.setImage(null); }); //创建菜单栏并向其中添加菜单。 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); } }