JavaFX的.为标题栏和操作系统任务栏设置不同的图标

Dim*_*ime 14 java icons javafx ico javafx-8

JavaFX中是否有一种方法可以为标题栏和操作系统任务栏设置不同的应用程序图标?

问题是系统任务栏中显示的图标与标题栏中的图标相比要大得多,并且系统无法正确调整它们的大小.

我想为不同的图标大小使用不同的图像.与您在.ico文件中的操作类似.

如果我打了stage.getIcons().add(...)两次电话,那么前一个图像将始终用于两个条形图.

为此,我还无法使用已存在的.ico文件(支持不同大小).

小智 3

有一种方法可以使用两个不同的阶段,但它可能有问题(仅在 Windows 7 上测试)。以下示例使用 Java 8/JavaFX 8。

此代码设置 JavaFX 启动时收到的主阶段任务栏上显示的图标,但使该阶段不可见(透明,零大小)。然后,它会打开一个带有不同图标的新可见窗口。

由于这只是一个子窗口而不是真正的窗口,因此必须将 hide 事件委托给隐藏阶段来关闭应用程序。可能有更多的事件需要委派,例如最小化窗口。

public class Main extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.getIcons().add(getImage("taskbar_icon.png"));
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        primaryStage.setWidth(0);
        primaryStage.setHeight(0);
        primaryStage.show();

        Stage visibleStage = new Stage();
        visibleStage.initOwner(primaryStage);
        visibleStage.getIcons().add(getImage("window_icon.png"));
        visibleStage.setScene(new Scene(...));
        visibleStage.setOnHidden(e -> Platform.runLater(primaryStage::hide));
        visibleStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)