使用当前的 JavaFX 2.2 API 很难做好。
这里有一些选项。
使用在其 MenuItem 中设置了图形的 MenuButton
这是采取的方法带有弹出窗口的按钮如下所示的可执行文件示例代码.
![wizpopup](https://i.stack.imgur.com/mEBxb.png)
使用弹出控件
看看 ColorPicker 是如何做到这一点的code.
颜色选择器扩展弹出控件。您可以这样做,但构建您自己的 PopupControl 所需的所有 API 当前并非都是公开的。因此,对于 JavaFX 2.2,您必须依赖内部 com.sun 类,这些类已被弃用,并将被 JDK8 中的公共 javafx.scene.control 类取代。
使用上下文菜单
因此,我认为您的“使用 ContextMenu 并向 MenuItem 添加窗格”的想法可能是目前最好的方法。您应该能够通过使用来做到这一点自定义菜单项 or 设置图形在正常情况下MenuItem
. The ContextMenu
很好相对定位逻辑. A ContextMenu
也可以由菜单按钮.
使用自定义对话框
为此,请在相对于节点的位置显示透明舞台。
我暂时链接了一些示例代码来帮助您入门here。
示例代码执行相对于主窗口侧面的定位,但您可以更新它以执行相对于给定节点侧面的定位(如 ContextMenu 的 show 方法)。
使用玻璃板
为此,请创建一个 StackPane 作为主窗口的根。将主要内容窗格放置为 StackPane 中的第一个节点,然后创建一个 Group 作为 stackpane 中的第二个节点,以便它将分层在主要内容的顶部。通常,顶部组不包含任何内容,但是当您想要显示弹出窗口时,请将其放置在顶部组中并将其转换到相对于主要内容中适当节点的位置。
你可以看看锚节点是如何这个演示用于了解这如何适应您的环境。
JavaFX8 有相关更新吗?
与 Java 8 的相关性没有太大差异,一般来说,这些选项是基于 Java 2.2 功能的这篇文章中概述的。 Java 8 确实添加了Dialog and Alert功能,但这些更针对的是使用带有边框、标题和按钮的对话框,而不是问题中所需的功能类型。也许您可以从 Dialog 类开始并对其进行大量自定义以获得接近所需的内容,但您最好从空白阶段或 PopupControl 开始。