【发布时间】:2014-03-08 09:13:15
【问题描述】:
所以我的问题,如标题中所述(有点),是关于 Javafx(即 2.2)弹出窗口的某些方面的行为。大多数时候,你会得到一个弹出窗口,然后给它一个窗口来充当它的父级,你给它一些场景,它往往会相对独立地行动。
这一切都很好,但是,就我而言,我需要一个弹出窗口,当事件发生时,它可以将自身锚定到特定位置的特定阶段(窗口)。然后,该弹出窗口会在窗口消失时消失(最小化,屏幕外,等等),在它会移动时移动,并且在所有本质和功能上,它是窗口的物理扩展,只是具有自定义形状。
当然,这有很多细微差别,而且大多数情况下,一切都很好。我似乎唯一想不通的是,通常在像 Windows 7 64 位这样的平台上。你打开两个程序,好吧。然后,如果程序有一点重叠,则无论哪个具有焦点,都会显示整个程序,而另一个则给人的印象是在另一个窗口“后面”。 (当另一个窗口聚焦在同一个位置时,Windows 是否真的在窗口“后面”渲染应用程序图形,我不确定。)。通常,javafx 也很好地支持此功能。但由于某种原因,javafx 中的 Popup 类(请参阅文档here)并没有这样做。它总是在它所显示的任何内容之上,无一例外。为了完整起见,这是我非常简单的弹出代码(至少与显示它及其属性有关的部分):
Popup myPop = new Popup();
//************************Popup Property Setter**************************
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
myPop.setWidth(width);
myPop.setHeight(initialHeight);
myPop.setAutoHide(false);
myPop.setAutoFix(false);
myPop.setHideOnEscape(false);
myPop.setX(xLocation);
myPop.setY(yLocation);
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//**********************end of Popup Properties**************************
myPop.getContent().add(main_anchor);
myPop.show(FileChooserWindow.get_stage());
主锚点有一些我在“myPop”弹出窗口中包含的各种组件,并且 FileChooserWindow 是一个非空父窗口,它将在此方法调用时毫无例外地打开。
这也是我所指行为的屏幕截图。请注意 pdf 中突出显示的文本,这是我的光标当前具有焦点的位置。此外,可以在从左侧突出的 pdf 背面看到弹出窗口所锚定的窗口。
你们可以提供的任何帮助将不胜感激。我真的希望我不必检查活动进程及其相对于弹出窗口的位置,这已经危险地接近我的知识边界,听起来像是一个完整的 PITA。
【问题讨论】:
标签: java user-interface popup javafx-2