如何制作JavaFX-Widget

时间:2013-03-29 17:55:56

标签: java javafx-2 javafx fxml

可以将舞台固定在桌面上吗?

我希望将我的应用程序表现为小部件,因此当它启动时,它应该显示在桌面的正上方,而不是在可能打开的当前应用程序的前面。

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

1 个答案:

答案 0 :(得分:6)

我尝试使用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 styleStageStyle.UTILITY,则Windows不会在Windows任务栏中显示该阶段的图标。

我在OS X上尝试了几种不同的舞台样式,当我运行应用程序时,一个小的Java杯图标将始终显示在OS X底座中(与Windows不同)设置icons for the stage没有摆脱Java杯图标。也许如果你创建了一个self-contained OS X应用程序,你可以在打包步骤中关闭它,或者将图标设置为透明图像,这样用户就不会看到它。

您还可以在JavaFX issue tracker中为此创建功能请求(与常设功能分开)。如果您创建与此相关的任何问题,请解释您的用例并链接回此问题。