【发布时间】:2013-03-29 17:55:55
【问题描述】:
是否可以在桌面上粘贴舞台?
我想让我的应用程序像小部件一样,所以当它启动时,它应该显示在桌面的正上方,而不是在可能打开的当前应用程序的前面。
小部件的另一个条件是它在任务栏中没有条目。也可以吗?
【问题讨论】:
-
你不能直接在java中这样做,它们是用html和javascript构建的。
是否可以在桌面上粘贴舞台?
我想让我的应用程序像小部件一样,所以当它启动时,它应该显示在桌面的正上方,而不是在可能打开的当前应用程序的前面。
小部件的另一个条件是它在任务栏中没有条目。也可以吗?
【问题讨论】:
我在 JavaFX 2.2 上进行了尝试,结果如下:
所以当它启动时,它应该显示在桌面的正上方,而不是在可能打开的当前应用程序的前面
调用stage.toBack 将在任何其他窗口后面放置一个舞台。
我能够让一个窗口在大多数情况下始终保持在其他窗口之后(至少在 Mac 上)。为此,我在clock application 中显示舞台之前添加了几个侦听器和过滤器。
stage.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> observableValue, Boolean wasFocused, Boolean focused) {
stage.toBack();
}
});
stage.addEventFilter(MouseEvent.ANY, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
stage.toBack();
}
});
有一个现有的请求可以设置stage to always be on top。您可以创建一个新的相应请求,以使某个阶段始终落后。
小部件的另一个条件是它在任务栏中没有条目
在 Windows 上,我认为如果您将init the stage style 转换为StageStyle.UTILITY,那么 Windows 不会在 Windows 任务栏中显示舞台图标。
我在 OS X 上尝试了几种不同的舞台风格,当我运行应用程序并且(与 Windows 不同)设置 icons for the stage 并没有摆脱 Java杯子图标。也许如果您创建了一个self-contained OS X 应用程序,您可以在打包步骤中为它关闭图标,或者将图标设置为透明图像,以便用户看不到它。
您还可以在JavaFX issue tracker 中为此创建一个功能请求(与始终支持的请求分开)。如果您创建了与此相关的任何问题,请解释您的用例并链接回此问题。
【讨论】:
alwaysOnTop 功能,应该有一个类似的东西来让窗口总是留在后面。有人知道官方问题跟踪器是否存在问题吗?