JavaFX中是否有一种方法可以为 Headers 栏和操作系统任务栏设置不同的应用程序图标?
问题是系统任务栏中显示的图标与 Headers 栏中的图标相比要大得多,并且系统无法正确调整它们的大小 .
我想为不同的图标大小使用不同的图像 . 与您在.ico文件中的操作类似 .
如果我两次调用 stage.getIcons().add(...) ,则前一个图像将始终用于两个条形图 .
stage.getIcons().add(...)
出于此目的,我也无法使用已存在的.ico文件(支持不同大小) .
有一种方法可以使用两个不同的阶段但它可能有它的问题(仅在Windows 7上测试) . 以下示例使用Java 8 / JavaFX 8 .
此代码设置在JavaFX启动时收到的主阶段任务栏上显示的图标,但使阶段不可见(透明,零大小) . 然后它会打开一个带有不同图标的新的可见窗口 .
由于这只是一个子窗口而不是真实窗口,因此必须将隐藏事件委托给隐藏阶段以关闭应用程序 . 可能会有更多事件需要委派,例如最小化窗口 .
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(); } }
1 回答
有一种方法可以使用两个不同的阶段但它可能有它的问题(仅在Windows 7上测试) . 以下示例使用Java 8 / JavaFX 8 .
此代码设置在JavaFX启动时收到的主阶段任务栏上显示的图标,但使阶段不可见(透明,零大小) . 然后它会打开一个带有不同图标的新的可见窗口 .
由于这只是一个子窗口而不是真实窗口,因此必须将隐藏事件委托给隐藏阶段以关闭应用程序 . 可能会有更多事件需要委派,例如最小化窗口 .