【问题标题】:How to make a JavaFX-Widget如何制作 JavaFX 小部件
【发布时间】:2013-03-29 17:55:55
【问题描述】:

是否可以在桌面上粘贴舞台?

我想让我的应用程序像小部件一样,所以当它启动时,它应该显示在桌面的正上方,而不是在可能打开的当前应用程序的前面。

小部件的另一个条件是它在任务栏中没有条目。也可以吗?

【问题讨论】:

标签: java javafx-2 javafx fxml


【解决方案1】:

我在 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 中为此创建一个功能请求(与始终支持的请求分开)。如果您创建了与此相关的任何问题,请解释您的用例并链接回此问题。

【讨论】:

  • 这个解决方案在 Windows 上非常适合我,尽管我不需要从任务栏中隐藏窗口。我认为现在,在 JavaFX 8 中,我们有一个 alwaysOnTop 功能,应该有一个类似的东西来让窗口总是留在后面。有人知道官方问题跟踪器是否存在问题吗?
  • 不知道是否创建了功能请求。如果您愿意,您可以搜索问题跟踪器并在没有现有功能请求的情况下创建一个。
猜你喜欢
  • 2023-03-10
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多