JavaFX的2颜色选择器有一个按钮,弹出一个颜色选择窗格中,如下所示:
我希望做同样的事情,在我想自定义面板弹出点击按钮时,当别的东西被点击(在我的情况,一些图像缩略图)消失。 什么是实现这一目标的最佳途径? 我应该使用文本菜单和面板添加到一个菜单项某种程度上,还是有别的东西我应该看看?
JavaFX的2颜色选择器有一个按钮,弹出一个颜色选择窗格中,如下所示:
我希望做同样的事情,在我想自定义面板弹出点击按钮时,当别的东西被点击(在我的情况,一些图像缩略图)消失。 什么是实现这一目标的最佳途径? 我应该使用文本菜单和面板添加到一个菜单项某种程度上,还是有别的东西我应该看看?
这是一种很难与当前的JavaFX 2.2 API做的很好。
这里有一些选择。
使用菜单按钮与图形设定在它的菜单项
这是采取的办法按钮与弹出显示下面的可执行代码示例 。
使用PopupControl
看看在ColorPicker请问这是怎么在它的代码 。
ColorPicker的延伸PopupControl 。 你可以这样做,但不是所有的建立你自己的PopupControl所需的API是目前公众。 因此,为JavaFX 2.2,你将不得不依赖于这些被取消,并将公共javafx.scene.control班JDK8更换内部的com.sun类。
使用一个ContextMenu
所以,我觉得你的想法,“使用文本菜单和面板添加到菜单项”可能是目前最好的办法。 您应该能够通过使用要做到这一点CustomMenuItem或设置图形上正常的MenuItem
。 所述ContextMenu
具有良好的相对定位逻辑 。 一个ContextMenu
也可以通过一个触发菜单按钮 。
使用自定义对话框
要做到这一点,在相对于节点的位置处显示的透明阶段。
有让你开始一些示例代码,我已经暂时挂在这里 。 示例代码确实相对定位到主窗口的两侧,但你可以更新它来执行相对定位给定节点(如文本菜单的显示方法)的两侧。
使用玻璃面板
要做到这一点,创建一个StackPane作为你的主窗口的根。 请将您的主要内容窗格作为StackPane第一个节点,然后创建一个组作为stackpane第二个节点,所以它会在层主要内容的顶部。 通常情况下,前组包含什么,但是当你想展示你的弹出式窗口,将其放置在顶部组并将其转化为相对于适当的节点在你的主要内容的位置。
你可以看看如何在锚节点此演示来看看这可能是适应你的环境。
是否有此为JavaFX8相关的更新?
没有对Java 8相关的相差太大,一般的选项都在这篇文章基于Java 2.2的功能概述。 Java的8确实增加对话和警报功能,但这些都是更有针对性的在使用对话的有边界,标题和按钮,而不是在问题所需的那种功能。 也许你会能够从Dialog类的开始,大量定制它得到了接近所需要的,但你可能会更好过由空白阶段或PopupControl不是启动。