JavaFX 2自定义弹出窗格

avaFX 2颜色选择器具有一个按钮,它会弹出一个颜色选择器窗格,如下所示:

JavaFX 2颜色选择器

我想做类似的事情,因为我希望自定义窗格在单击按钮时弹出,而在单击其他按钮时消失(在我的情况下,是一些图像缩略图)。实现此目标的最佳方法是什么?我应该使用ContextMenu并以某种方式将窗格添加到MenuItem,还是应该查看其他内容?

回答:

当前的JavaFX 2.2 API很难做到很好。

这里有一些选择。

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

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

使用PopupControl

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

ColorPicker扩展了PopupControl。您可以执行此操作,但并非所有构建您自己的PopupControl所需的API当前都是公开的。因此,对于JavaFX 2.2,您将不得不依赖内部com.sun类,该类已被弃用,并将由JDK8中的公共javafx.scene.control类代替。

使用上下文菜单

因此,我认为您的想法“使用ContextMenu并将窗格添加到MenuItem”可能是目前最好的方法。您应该能够通过使用CustomMenuItem或在普通菜单上设置图形来做到这一点MenuItem。在ContextMenu具有良好的相对定位逻辑。一个ContextMenu还可以通过触发菜单按钮。

使用自定义对话框

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

有一些示例代码可以帮助您入门,我已经在这里临时链接了。示例代码将相对于主窗口的侧面进行相对定位,但是您可以对其进行更新以相对于给定节点的侧面进行定位(例如ContextMenu的show方法)。

使用玻璃窗格

为此,请创建一个StackPane作为主窗口的根。将您的主要内容窗格放在StackPane中的第一个节点上,然后在堆栈窗格中创建一个Group作为第二个节点,以便它将在主要内容的顶部分层。通常,顶层组不包含任何内容,但是当您要显示弹出窗口时,请将其放在顶层组中,并将其转换为相对于主要内容中相应节点的位置。

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

JavaFX8是否有与此相关的更新?

Java 8的相关性没有太大区别,通常,这些选项如本文中基于Java 2.2功能概述的那样。Java 8确实添加了对话框和警报功能,但是这些功能更多地针对带有边框,标题和按钮的对话框,而不是问题中所需的那种功能。也许您可以从Dialog类开始并对其进行大量自定义,以使其接近所需的内容,但是最好从空白阶段或PopupControl开始。

以上是 JavaFX 2自定义弹出窗格 的全部内容, 来源链接: utcz.com/qa/425516.html

回到顶部