如何创建弹出菜单

2024-03-09

我是 javafx 的新手。我想在单击鼠标右键时显示​​弹出菜单。我找到一个教程Here http://pixelduke.wordpress.com/2011/12/11/popupmenu-in-javafx/ and Here http://lawrencepremkumar.wordpress.com/2011/06/19/custom-specialpopup-using-javafx-2-0/但不明白。我想创建弹出菜单,该菜单显示在此链接的图像中。

现在我正在创造舞台,但我不想要舞台。我需要显示弹出菜单,该菜单在右键单击时显示,并在单击任意位置时关闭。

这是我正在使用 stage 的代码,但我需要像上面的链接一样打开弹出菜单。

 public void MouseClickedOnTree(MouseEvent event) {
if (event.isSecondaryButtonDown()) {

        System.out.println("secondary press");
        final Stage optionstage = new Stage();

        VBox vBox = new VBox(5);
        vBox.setMinHeight(50);
        vBox.setMinWidth(50);
        Button btnNewTestBed = new Button("New Testbed");
        btnNewTestBed.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                try {
                     optionstage.close();
                    stage.show();
                } catch (IOException ex) {
                    Exceptions.printStackTrace(ex);
                }
            }
        });
        Button btnOpenTestbed = new Button("Open Testbed");
        btnOpenTestbed.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                optionstage.close();

            }
        });
        optionstage.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent t) {
                if (t.getCode() == KeyCode.ESCAPE) {
                    System.out.println("click on escape");
                    //Stage sb = (Stage) label.getScene().getWindow();//use any one object
                    if(optionstage.isShowing())
                        optionstage.close();
                }
            }
        });

        vBox.getChildren().addAll(btnNewTestBed, btnOpenTestbed);
        optionstage.setScene(new Scene(vBox, 100, 100));
        //stage.setScene(new Scene(new Group(new Text(50,50, "my second window")))); 
        optionstage.setX(event.getSceneX());
        optionstage.setY(event.getScreenY());
        optionstage.initStyle(StageStyle.UNDECORATED);
        optionstage.show();

    }

请向我提供任何链接或参考。


您的代码的上下文不是很清楚:这是在事件处理程序内部吗?如果是这样,它的事件处理程序有什么用?如果不是,那是什么event在开幕式上if陈述?

您提供的两个链接非常复杂;在 JavaFX 中(与 Swing 不同),您应该只考虑为相当高级的用例对现有 Node 类进行子类化。您不需要这种复杂程度来创建弹出菜单。

创建弹出菜单的最简单方法是Control(或子类);你只需要创建一个ContextMenu, add MenuItems 到它,并将其设置为contextMenu由您掌控:

TextField textField = new TextField("Type Something"); // we will add a popup menu to this text field
final ContextMenu contextMenu = new ContextMenu();
MenuItem cut = new MenuItem("Cut");
MenuItem copy = new MenuItem("Copy");
MenuItem paste = new MenuItem("Paste");
contextMenu.getItems().addAll(cut, copy, paste);
cut.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        System.out.println("Cut...");
    }
});
// ...
textField.setContextMenu(contextMenu);

如果你想使用ContextMenu在不是一个节点上Control (a Pane or a Shape,例如),你没有setContextMenu(...)方法,所以你只需要多做一点工作:

final AnchorPane pane = new AnchorPane();
// fill pane with nodes, etc
// create context menu and menu items as above
pane.setOnMousePressed(new EventHandler<MouseEvent>() {
    @Override
    public void handle(MouseEvent event) {
        if (event.isSecondaryButtonDown()) {
            contextMenu.show(pane, event.getScreenX(), event.getScreenY());
        }
    }
});

See the Javadocs http://docs.oracle.com/javafx/2/api/javafx/scene/control/ContextMenu.html for ContextMenu or the tutorial http://docs.oracle.com/javafx/2/ui_controls/menu_controls.htm#sthref209更多细节。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建弹出菜单 的相关文章

  • 将 .java 文件中实例化的 TilePane 添加到 FXML

    我正在尝试将带有 ImageView 子级的 TilePane 添加到 JavaFX 中的场景中 目前 我的 FXML 正在加载一个空的 TilePane 我制作 TilePane 的当前 FXML 行是
  • 通过 JNI 与外语 (Prolog) 的 JavaFX 应用程序的控件进行交互

    我想通过外语应用程序 Prolog 与 JavaFX 应用程序的控件进行交互 从 Java 的角度来看尽可能透明 Java和Prolog通过JNI连接 我已经解决了JNI交互问题 我的问题是 检测任意 JavaFX 应用程序的最佳方法是什么
  • 如何向 JavaFX 图表添加价值标记?

    我正在尝试使用 JavaFX 构建一个系列图表 其中数据是动态插入的 每次插入新值时 我想检查这是否是迄今为止的最高值 如果是 我想画一条水平线来显示这是最大值 在 JFree 图表中 我会使用 ValueMarker 但我正在尝试使用 J
  • javafx 2.1 中警报的替代品是什么?警报在 javafx 1.3 中,但不在 javafx 2.1 中

    Alert 是 javafx 1 3 中的类 但在 javafx 2 1 中不是 那么 javafx 2 1 中警报的替代品是什么 特奥卡利是正确的 警报对话框 http javafx jira kenai com browse RT 12
  • 如何在 JavaFX2 中的任务之间重置进度指示器?

    我的主屏幕 UI 上有一个进度指示器 由各种选项卡和服务共享 每个 TabController 都有自己的 Service 实例 在我的 MainController 类中 对于每个选项卡 我已将每个服务的进度属性绑定到 ProgressI
  • JavaFx:在 fxml 文件中设置窗口标题

    我刚刚开始将 JavaFx 用于新应用程序 我知道如何在 java 代码中设置窗口标题 但如何在 fxml 文件中设置它 感谢您的帮助 编辑 这是我的代码 Override public void start Stage primarySt
  • 在 JavaFx 标签中显示变化的值

    在JavaFX中 如何使用 标签 显示随时间不断变化的值 有很多方法可以实现这一点 最方便的是使用 JavaFX 的 DataBinding 机制 assuming you have defined a StringProperty cal
  • JavaFX HMTLEditor 对“返回”键没有反应

    我试图用 JavaFX 做一些实验HTMLEditor成分 我使用了以下代码 摘录 fxPanel new JFXPanel Platform runLater new Runnable Override public void run G
  • JComboBox 弹出菜单不出现

    我在 JPanel 中有一个 JComboBox 它本身嵌套在其他几个 JPanel 中 它填充了枚举的成员 我遇到了一个问题 当我单击展开按钮时 弹出菜单不会出现 以下是我迄今为止收集到的信息 1 第一次点击展开按钮没有任何反应 第二次单
  • 限制 JavaFX TextField 的字符数会导致撤消时 IndexOutOfBounds

    我需要限制用户可以输入的字符数TextFieldJavaFX 控件 我已经延长了TextField like so public class LengthLimitedTextField extends TextField param ma
  • 如何更改JavaFX中的突出显示颜色?

    如何更改JavaFX中的突出显示颜色 通常它是带有渐变的蓝色 但我想要绿色突出显示 我已经尝试过以下方法 root fx shadow highlight color CCFF99 感谢帮助 Look at 里海 css JavaFX 2
  • Javafx 删除应用程序启动时的快速白屏

    使用 javafx 7 更新 60 操作系统 Windows 7 我刚刚从那里获取了 helloworldhttp docs oracle com javafx 2 get started hello world htm http docs
  • JavaFX 2 自动列宽

    我有一个 JavaFX 2 表 显示人们的联系方式 假设有三列 名字 姓氏和电子邮件地址 当我的应用程序启动时 它会在表中填充有关系统中已有人员的几行数据 问题是列宽都是相同的 大多数时候 名字和姓氏会完整显示 但电子邮件地址会被剪掉 用户
  • 如何在 Eclipse 中使用 JavaFX 2 SDK?

    我已经安装了 JavaFX 2 0 SDK 现在我想使用 Eclipse 制作一个 JavaFX 应用程序 但我该如何使用javafx Eclipse 中的类 The 官方 JavaFX Eclipse 插件 http docs oracl
  • Android 中卡片视图内带有三个点的小部件的名称是什么?

    带有三个点的小部件是什么 如何将其添加到我的应用程序中 这根本不是一个小部件 它是一个ImageButton 无边框风格 使用包含一个的溢出图标PopupMenu 如需文档教程访问http developer android com gui
  • 如何将JavaFX嵌入到eclipse rcp视图中

    我正在尝试从简单的 Eclipse 视图中使用 JavaFX 2 但我得到了一个 java lang UnsatisfiedLinkError 类的 URL 无效 bundleresource 435 fwk1827795025 com s
  • 如何获取javafx imageView中显示图像的宽度/高度?

    我需要获取 imegView 中显示图像的宽度 高度 并将其与 imageView getImage getWidth getHeight 中的原始图像大小进行比较 并在用户从应用程序 GUI 中调整其大小时监听更改 I get this
  • 企业 Web 应用程序中的 JavaFX - 经典网页的良好替代方案?

    我们为不同的客户开发了多种 Web 应用程序 从为那些可怜的管理员提供的简单 看起来很无聊的 CRUD 风格的 GUI 到为那些互联网用户提供的奇特的 AJAX 增强型 GUI 所有这些都基于 JSF 1 2 与 JBoss Seam 2
  • 如何在JavaFX 2应用程序中正确使用Weld?

    我正在尝试让 Weld 在我的 JavaFX 2 SE 应用程序中工作 或者我应该说 JavaFX 在 Weld 中工作 我有响应用户交互的控制器 现在我想将我的服务 例如数据库服务 注入到这些控制器中 使用 Weld 这应该像以下一样简单
  • JavaFX 全屏 - 根据屏幕尺寸调整元素大小

    有没有什么方法可以使全屏 如果可能的话也调整大小 而不是重新排列所有内容 实际上它所做的是重新排列元素 例如调整大小但调整到整个屏幕 以形成实际的全屏模式 就像通常改变屏幕分辨率的游戏一样 以便按钮和文本根据屏幕 窗口的大小相应增长 另外

随机推荐

  • C++ 相当于指定初始化器?

    最近我一直在研究一些嵌入式设备 其中我们有一些结构体和联合体需要在编译时初始化 以便我们可以将某些不需要修改的东西保留在闪存或ROM中 并节省一点闪存或 SRAM 但会牺牲一点性能 目前 该代码编译为有效的 C99 但如果没有这种调整 它也
  • Prolog 中的条件编写

    I have Prolog包含飞机时刻表的数据库 它看起来是这样的 fly id from to days 1 0 1 0 1 0 1 正如你所看到的 有 7 个值days谓词 从星期一到星期日 我想做的是每天打印 价值所在1 但将其打印为
  • Win32:Watson 博士的完整/迷你转储和我自己编写的转储之间有区别吗?

    我有一个应用程序在发布版本中偶尔会崩溃 不幸的是 看起来它在第 3 方 DLL 中崩溃了 在试图掌握它的过程中 我一直在如何操作和 Windows 如何创建故障转储的描述的海洋中游泳 我正在考虑使用这个建议的小型转储 获取启动时崩溃的进程的
  • 具有相同擦除的两种方法不需要覆盖等效(或者它们的签名不是它们之间的子签名)?

    我正在阅读关于 jdk6 的令人难以置信的书 java scjp 认证程序员指南 其中有一个关于泛型覆盖的部分 它描述了子签名和覆盖等效项 并描述了我引用的一些覆盖等效项的示例 给定类中的以下三个泛型方法声明 static
  • 无法保存 applicationHost.config 文件

    我无法保存 applicationHost config 文件 当我停止 IIS 服务并关闭 Visual Studio 时 它显示 保存失败 它在另一个程序中打开 知道吗 如果您使用 64 位架构并尝试使用 32 位编辑器 例如 Note
  • 将背景图像添加到各个片段

    我有一个应用程序有多个fragments我想知道如何添加每个不同的背景fragment 我使用的布局有可滚动选项卡 它们都使用相同的 xml 文件 我也有一个MainActivity设置视图和adapter对于每个fragment 我知道你
  • 将 ActiveRecord 验证错误转换为 API 可使用错误

    我正在 Rails 4 中编写一个非常标准的 CRUD RESTful API 不过 我在错误处理方面有所欠缺 假设我有以下模型 class Book lt ActiveRecord Base validates title presenc
  • 将 Kinect ColorImageFrame 转换为位图

    我将 Kinect Microsoft SDK 与 XNA 结合使用 我想使用 GRATF 进行标记识别 如何转换 Kinect 的数据ColorImageFrame to a System Drawing Bitmap or AForge
  • 使用 python (win32com.client) 将图像插入到 powerpoint 幻灯片中

    我的任务是在幻灯片中插入数百张图像并调整其大小 我需要使用与我们公司使用的其他幻灯片类似的特定源格式 我一直在使用活跃的 python win32com API 并且已经弄清楚如何打开文件并创建空白幻灯片 我的问题是我将如何插入图像并将其大
  • Fancybox 包装器无法根据图像尺寸正确自动调整大小

    我在使用 FancyBox 时遇到问题 它应该根据图像的尺寸自动调整包装器的大小 它不是这样做的 具体来说就是太小了 这是我使用的 FancyBox jQuery 代码 a rel photo gallery fancybox type i
  • 在QGraphicsView的ScrollHandDrag模式下,如何停止场景中QGraphicsItems的移动?

    我有多个QGraphicsItem场景中的内容分布在场景的不同部分 在应用程序中 有不同的模式 其中一种模式用户可以滚动场景 手掌拖动模式 为了实现场景I的滚动set dragMode of QGraphicsView to ScrollH
  • 无法识别已安装的项目特定的 nuget 包

    我有一个 Web 项目 由于 nuget 错误而无法构建 我们有许多网站都使用名为 Sitecore 的网络 CMS 我们不同的网站在不同的版本下运行 因此 我们有一个针对多个版本的通用库如此处所述 https stackoverflow
  • 本地图像在 React-Native 应用程序发布版本中不可见

    在我的反应本机应用程序中我有 src http postimg org image ak6w7cbk3 文件夹 其中包括Images文件夹和屏幕文件夹 Myscreens文件夹有各种成分我在哪里使用本地图像Images使用以下代码
  • 如何使用表单身份验证将用户重定向到密码恢复页面

    我是 asp net 的初学者 我目前有一个登录页面 屏幕底部有一个忘记密码链接按钮 我还使用表单身份验证来防止未经授权的用户访问其他页面 除了一件事之外 身份验证似乎工作正常 一旦用户单击链接按钮 它就会阻止用户访问密码恢复页面 如何允许
  • 可变数量的参数而不装箱值类型?

    public void DoSomething params object args 上述签名的问题在于 传递给该方法的每个值类型都将被隐式装箱 这对我来说是严重的性能问题 有没有办法声明一个接受可变数量参数而不装箱值类型的方法 Thank
  • jQuery 中的输入与 :Input

    我想知道为什么人们似乎更喜欢 input over input作为 jQuery 选择器 基本上 这两行似乎做了同样的事情 input first focus input first focus 但第二个版本使用更广泛 我不明白为什么 此外
  • 第三方脚本可以设置第一方 cookie 吗?

    我在网上阅读了很多有关 cookie 的内容 但没有解决这个问题 假设我在 a com 上有一台服务器 而 b com 提供的网页在我的服务器上的该网页中嵌入了一个脚本 该脚本在设置 cookie 方面可以做什么 它可以设置一个cookie
  • 需要特殊数组(线性场)的算法

    我有一个数组 线性场 与预先排序的数字 1 2 3 4 5 6 但这些数组向右移动 k次 now its 5 6 1 2 3 4 k 2 但我不知道k 只有数组A 现在我需要一个算法来找到 A 中的最大值 运行时间 O logn 我认为它是
  • Vue.js 单向绑定表单

    我是 Vue js 的新手 我正在尝试测试这个框架的一些功能 现在我正在测试输入表单 我想进行单向绑定 而不使用v model指令 但我找不到任何示例 有人可以帮助我吗 这是单向和双向绑定的示例 var V new Vue el vue i
  • 如何创建弹出菜单

    我是 javafx 的新手 我想在单击鼠标右键时显示 弹出菜单 我找到一个教程Here http pixelduke wordpress com 2011 12 11 popupmenu in javafx and Here http la