当前位置: 首页 > 知识库问答 >
问题:

JavaFX 2 自定义弹出窗格

王楚青
2023-03-14

JavaFX 2颜色选择器有一个按钮,可以弹出一个颜色选择器窗格,如下所示:

我想做一些类似的事情,我想在点击按钮时弹出一个自定义窗格,然后在点击其他东西时消失(在我的例子中,是一些图像缩略图)。实现这一目标的最佳方式是什么?我应该使用ContextMenu并以某种方式将窗格添加到MenuItem,还是应该查看其他内容?

共有1个答案

华烈
2023-03-14

使用当前的JavaFX2.2API很难做好。

这里有一些选择。

在菜单项中使用带有图形集的菜单按钮

这是Button中采用的方法,弹出窗口显示在下面的可执行示例代码中。

使用弹出控件

看看ColorPicker是如何在其代码中做到这一点的。

ColorPicker扩展了PopupControl。您可以这样做,但并非构建自己的PopupControl所需的所有API目前都是公共的。因此,对于JavaFX 2.2,您将不得不依赖已弃用的内部com.sun类,这些类将被JDK8中的公共javafx.scene.control类取代。

使用上下文菜单

所以,我认为你的想法“使用上下文菜单并向菜单项添加窗格”可能是目前最好的方法。您应该能够通过使用自定义菜单项或在普通菜单项上设置图形来执行此操作。ContextMenu 具有很好的相对定位逻辑。ContextMenu也可以由MenuButton触发。

使用自定义对话框

为此,请在相对于节点的位置显示透明阶段。

有一些示例代码可以帮助您入门,我已在此处临时链接。示例代码对主窗口的侧面html" target="_blank">执行相对定位,但您可以对其进行更新以相对于给定节点的侧面执行定位(如 ContextMenu 的 show 方法)。

使用玻璃窗格

为此,创建一个StackPane作为主窗口的根。将主内容窗格作为StackPane中的第一个节点,然后创建一个组作为StackPane中的第二个节点,这样它将在主内容的顶部分层。通常,顶部组不包含任何内容,但当您希望显示弹出窗口时,请将其放置在顶部组中,并将其转换到与主内容中相应节点相对的位置。

您可以查看此演示中的锚节点是如何使用的,以了解这如何适应您的上下文。

JavaFX8是否有相关的更新?

Java8的相关性没有太大差异,一般来说,这些选项如本文基于Java2.2功能所述。Java8确实添加了对话框和警报功能,但这些功能更适合于使用带有边框、标题和按钮的对话框,而不是问题中所需的功能。也许您可以从Dialog类开始,并对其进行大量自定义,以获得接近所需的内容,但您最好从空白阶段或弹出控件开始。

 类似资料:
  • 问题内容: avaFX 2颜色选择器具有一个按钮,它会弹出一个颜色选择器窗格,如下所示: JavaFX 2颜色选择器 我想做类似的事情,因为我希望自定义窗格在单击按钮时弹出,而在单击其他按钮时消失(在我的情况下,是一些图像缩略图)。实现此目标的最佳方法是什么?我应该使用ContextMenu并以某种方式将窗格添加到MenuItem,还是应该查看其他内容? 问题答案: 当前的JavaFX 2.2 A

  • 我正在搜索JavaFX中弹出窗口的示例。我有JavaFX应用程序,有一次我需要一个弹出窗口出现。这个弹出窗口需要一些复杂的输入,我需要处理和检查并返回主应用程序/窗口。 现在的问题是,我在任何地方都找不到一个示例,说明如何在一个JavaFX控制器类中调用Now JavaFX弹出窗口?我只找到了examle如何创建对话框弹出窗口,但找不到基于JavaFX的新弹出窗口示例(我看到了一个解决方案,其中并

  • 本文向大家介绍WPF弹出自定义窗口的方法,包括了WPF弹出自定义窗口的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了WPF弹出自定义窗口的方法。分享给大家供大家参考,具体如下: 测试环境: [1]VS2010SP1 [2]WPF(.NET Framework 4)项目 内容简介 WPF工程如何弹出自定义窗口 第一步:自定义个窗口 为当前项目新添个Window项,XAML部份的代码略,

  • 我正在使用Kendo网格,其中有几个列用于概览行数据。当用户单击添加/编辑按钮时,弹出窗口将显示一些附加数据,其中包括一些复选框。 我在将复选框与当前MVVM模型绑定时遇到问题,因为在添加新行时,Kendo将模型视为变量,而不是数组。这会导致在选中一个复选框(单击)时选中多个复选框。在看了剑道MVVM之后,我打算得到当前弹出窗口的MVVM模型,以便操作一些数据,但没有成功。因此,我将在以下方面寻求

  • dialog组件使用visible这个prop开控制显示,监听visible赋值给visibleMe v-if=“visibleMe”的方式打开关闭弹窗 关闭的时候令visibleMe=false,但是因为visible是prop,不可以在这个组件内更改,所以visible还是true 所以下次调用它的组件再把visible改成true的时候,并不会触发watch 怎么通过只改dialog组件的代

  • The BrowserWindow module is the foundation of your Electron application, and it exposes many APIs that can change the look and behavior of your browser windows. In this tutorial, we will be going over