Mic*_*rry 18 javafx popup javafx-2
JavaFX 2颜色选择器有一个按钮,弹出一个颜色选择器窗格,如下所示:

我想做类似的事情,因为我想在单击按钮时弹出自定义窗格,在单击其他内容时消失(在我的例子中,是一些图像缩略图).实现这一目标的最佳方式是什么?我应该使用ContextMenu并以某种方式向MenuItem添加一个窗格,还是我还应该看一下其他内容?
jew*_*sea 29
使用当前的JavaFX 2.2 API很难做到这一点.
这里有一些选择.
在MenuItem中使用带有图形集的MenuButton
这是Button中采用的方法,弹出窗口显示在下面的可执行示例代码中.

使用PopupControl
ColorPicker扩展了PopupControl.您可以这样做,但并非构建您自己的PopupControl所需的所有API目前都是公开的.因此,对于JavaFX 2.2,您将不得不依赖于已弃用的内部com.sun类,并将被JDK8中的公共javafx.scene.control类替换.
使用ContextMenu
因此,我认为您"使用ContextMenu并向MenuItem添加窗格"的想法可能是目前最好的方法.您应该可以通过使用CustomMenuItem或在法线上设置图形来完成此操作MenuItem.在ContextMenu具有良好的相对定位逻辑.A ContextMenu也可以由MenuButton触发.
使用自定义对话框
为此,请在相对于节点的位置显示透明舞台.
有一些示例代码可以帮助您入门,我暂时将其链接到此处.示例代码与主窗口的两侧进行相对定位,但您可以更新它以执行相对于给定节点侧面的定位(如ContextMenu的show方法).
使用玻璃窗格
为此,请创建一个StackPane作为主窗口的根目录.将主内容窗格作为StackPane中的第一个节点,然后创建一个Group作为stackpane中的第二个节点,以便它将覆盖主要内容的顶部.通常,顶部组不包含任何内容,但是当您想要显示弹出窗口时,将其放在顶部组中并将其转换为相对于主要内容中相应节点的位置.
您可以查看此演示中的锚节点如何用于查看它如何适应您的上下文.
JavaFX8是否有相关的更新?
Java 8的相关性没有太大差异,一般来说,这些选项在本文中基于Java 2.2功能进行了概述.Java 8确实添加了对话和警报功能,但这些功能更有针对性地使用带边框,标题和按钮的对话框,而不是问题中所需的功能.也许你可以从Dialog类开始并大量定制它以获得接近所需的东西,但你最好从空白阶段或PopupControl开始.