如何向菜单项添加加速器?
javafxobject oriented programmingprogramming更新于 2025/4/13 22:37:17
菜单是呈现给用户的选项或命令列表,通常菜单包含执行某些操作的项目。菜单的内容称为菜单项,菜单栏包含多个菜单。
在 JavaFX 中,菜单由 javafx.scene.control.Menu 类表示,菜单项由 javafx.scene.control.MenuItem 类表示,而 javafx.scene.control.MenuBar 类表示菜单栏。
向菜单项添加加速器 −
加速器是菜单项的快捷方式。 MenuItem 类包含一个名为 accelerator 的属性(类型为 KeyCombination),它将组合与当前 MenuItem 的操作相关联。
您可以使用 setAccelerator() 方法设置此属性的值。因此,要将加速器设置为特定的 MenuItem,请对其调用 setAccelerator() 方法,如下所示 −
MenuItem item = new MenuItem("Exit", imgView3); item.setAccelerator(KeyCombination.keyCombination("Ctrl+X"));
示例
import javafx.application.Application; import javafx.event.ActionEvent; 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.ImageView; import javafx.scene.input.KeyCombination; import javafx.scene.paint.Color; import javafx.stage.Stage; public class MenuItemAccelerators extends Application { @Override public void start(Stage stage) { //创建图像视图文件 ImageView imgView1 = new ImageView("UIControls/open.png"); imgView1.setFitWidth(20); imgView1.setFitHeight(20); ImageView imgView2 = new ImageView("UIControls/Save.png"); imgView2.setFitWidth(20); imgView2.setFitHeight(20); ImageView imgView3 = new ImageView("UIControls/Exit.png"); imgView3.setFitWidth(20); imgView3.setFitHeight(20); //创建菜单 Menu fileMenu = new Menu("File"); //创建菜单项 MenuItem item1 = new MenuItem("Open File", imgView1); MenuItem item2 = new MenuItem("Save file", imgView2); MenuItem item3 = new MenuItem("Exit", imgView3); //为菜单项设置加速器 item1.setAccelerator(KeyCombination.keyCombination("Ctrl+F")); item2.setAccelerator(KeyCombination.keyCombination("Ctrl+S")); item3.setAccelerator(KeyCombination.keyCombination("Ctrl+X")); //将所有菜单项添加到菜单中 fileMenu.getItems().addAll(item1, item2, item3); //创建菜单栏并向其添加菜单。 MenuBar menuBar = new MenuBar(fileMenu); menuBar.setTranslateX(200); menuBar.setTranslateY(20); //设置舞台 Group root = new Group(menuBar); Scene scene = new Scene(root, 595, 200, Color.BEIGE); stage.setTitle("Menu Example"); stage.setScene(scene); stage.show(); } public static void main(String args[]){ launch(args); } }