JavaFX应用程序图标
图标文件
为了让我们的JavaFX应用程序看起来更美观,我们需要设置图标文件。其实所谓的应用程序图标文件,有两个不同的含义。
- Windows应用执行后窗口左上方显示的图标;
- 文件管理器中看到的应用程序可执行文件的图标。
窗口图标
窗口图标在JavaFX程序中与Stage
对象关联。其实本身就是一个Image
对象。通过下面的方法来访问:
public class Stage extends Window {
public final ObservableList<Image> getIcons() {
return icons;
}
}
stage.getIcons().add(new Image(...));
当然Kotlin里面会更简单。
stage.icons.add(Image(...))
JavaFX支持的Image格式有以下几种:
- BMP
- GIF
- JPEG
- PNG
按照一般的getResourceAsStream就可以引入resouces目录下的图形文件。
应用程序图标
文档
“含有.ico文件扩展名的文件是图像容器文件,用于存储不同Windows应用程序使用的图标,例如出现在用户桌面上的Windows文件夹图标、文件图标和程序图标。”
“ICO文件本身不是一个图像文件。它是一个存储两个位图和图像掩码的容器文件,用于创建保存在该文件中的图标。ICO文件可以被修改以创建Windows界面的自定义图标,有时也会随Windows桌面主题下载。”
一般来说,可以在网上下载到一些免费的ico文件,没有版权问题的ico文件也有很多。
JavaFX应用程序图标
设置JavaFX打包的应用程序有几种方式。
jpackage
打包Java FX应用程序中有,jpackage有一个–icon filename的命令行,这个文件名就写上xxx.ico就可以。
Gradle
用Gradle打包时,要设置jpackageImage的参数。build.gradle中的设置部分:
jlink {
imageZip = project.file("${buildDir}/distributions/app-${javafx.platform.classifier}.zip")
options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']
launcher {
name = 'timerdemo'
}
jpackage {
imageOptions += '--win-console'
icon = 'w.ico'
}
}
这里的设置放在jlink内部,是JPackageData的属性icon。
准备图标文件
在准备图标文件中间的图片时,有很多种选择,从16 × \times × 16一直到256 × \times × 256都有。
在Windows 11中,只需要准备三种格式即可,分别是32
×
\times
× 32,48
×
\times
× 48和64
×
\times
× 64。别问我怎么知道的……
我现在准备图标文件还用的MVS,造孽啊……