是否可以使用JavaFX更改应用程序图标,还是必须使用Swing?


当前回答

如果运行jar文件,Michael Berry指定的代码将改变标题栏和任务栏中的图标。快捷图标不可更改。

如果你运行一个用com编译的本地程序。zenjava,你必须添加一个链接到程序图标:

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.8.3</version>
    <configuration>
    ...
        <bundleArguments>
            <icon>${project.basedir}/src/main/resources/images/filename.ico</icon>
        </bundleArguments>
    </configuration>
</plugin>

这将为快捷方式和任务栏添加一个图标。

其他回答

如果运行jar文件,Michael Berry指定的代码将改变标题栏和任务栏中的图标。快捷图标不可更改。

如果你运行一个用com编译的本地程序。zenjava,你必须添加一个链接到程序图标:

<plugin>
    <groupId>com.zenjava</groupId>
    <artifactId>javafx-maven-plugin</artifactId>
    <version>8.8.3</version>
    <configuration>
    ...
        <bundleArguments>
            <icon>${project.basedir}/src/main/resources/images/filename.ico</icon>
        </bundleArguments>
    </configuration>
</plugin>

这将为快捷方式和任务栏添加一个图标。

在JavaFX的标题栏中插入自己的图标的另一种简单方法是使用以下方法将图像添加到你的主阶段:

Image ico = new Image("resources/images/iconLogo.png");
stage.getIcons().add(ico);

确保你导入javafx.scene.image.Image(如果使用netbeans这样的ide,这应该会自动为你完成)。

stage.getIcons().add(new Image(<yourclassname>.class.getResourceAsStream("/icon.png" )));

您可以使用此方法添加多个不同大小的图标。这些图像应该是同一图像的不同大小,并将选择最佳大小。 如。32岁的16 x16 32

stage.getIcons().add(new Image("/images/logo_only.png"));

在src文件夹中创建图像文件夹并从中获取图像是一个好习惯。

如果你得到无效的URL或资源没有找到,把你的图标.png在“bin”文件夹在你的工作空间。