JavaFX ContexMenu

时间:2020-01-09 10:36:35  来源:igfitidea点击:

JavaFX ContextMenu组件为JavaFX控件提供了一个标准的右键单击菜单。 JavaFX ContextMenu由类javafx.scene.control.ContextMenu表示。我们创建一个" ContextMenu"实例,并将其添加到我们希望" ContextMenu"处于活动状态的JavaFX控件。这是JavaFX TextArea的屏幕快照,其中已添加并显示了" ContextMenu":

完整的ContextMenu示例

这是一个完整的JavaFXContextMenu示例,为我们提供有关使用ContextMenu外观的快速概述:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ContextMenuExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    public void start(Stage primaryStage) {

        ContextMenu contextMenu = new ContextMenu();
        MenuItem menuItem1 = new MenuItem("Choice 1");
        MenuItem menuItem2 = new MenuItem("Choice 2");
        MenuItem menuItem3 = new MenuItem("Choice 3");

        menuItem3.setOnAction((event) -> {
            System.out.println("Choice 3 clicked!");
        });

        contextMenu.getItems().addAll(menuItem1,menuItem2,menuItem3);

        TextArea textArea = new TextArea();

        textArea.setContextMenu(contextMenu);

        VBox vBox = new VBox(textArea);
        Scene scene = new Scene(vBox);

        primaryStage.setScene(scene);
        primaryStage.setTitle("JavaFX App");

        primaryStage.show();
    }
}

创建一个ContextMenu

要使用JavaFXContextMenu,必须首先创建一个ContextMenu实例。这是创建JavaFXContextMenu的示例:

ContextMenu contextMenu = new ContextMenu();

将菜单项添加到ContextMenu

ContextMenu需要一个或者多个MenuItem实例,这些实例显示在菜单中。要检测单击了哪个菜单项,可将侦听器添加到MenuItem实例。以下是将MenuItem实例添加到ContextMenu的示例:

ContextMenu contextMenu = new ContextMenu();

MenuItem menuItem1 = new MenuItem("Choice 1");
MenuItem menuItem2 = new MenuItem("Choice 2");
MenuItem menuItem3 = new MenuItem("Choice 3");

menuItem3.setOnAction((event) -> {
    System.out.println("Choice 3 clicked!");
});

contextMenu.getItems().addAll(menuItem1,menuItem2,menuItem3);

注意如何使用setOnAction()在第三个MenuItem上设置onAction侦听器,并将Java Lambda Expression作为侦听器传递。如果单击此" MenuItem",则将执行动作侦听器。

将ContextMenu添加到JavaFX控件

需要将JavaFXContextMenu添加到JavaFX控件才能激活。我们可以通过JavaFX控件的setContextMenu()将ContextMenu添加到控件中。这是向JavaFX控件添加JavaFXContextMenu的示例:

TextArea textArea = new TextArea();

textArea.setContextMenu(contextMenu);