【问题标题】:Different icon sizes for the OS in JavaJava中操作系统的不同图标大小
【发布时间】:2012-05-12 15:55:42
【问题描述】:

我刚刚意识到,在不同版本的 Windows 中,出于不同的目的,使用了不同大小的图标。例如,窗口标题栏中的图标比程序的任务栏图标小得多,尤其是在 Windows 7 中。

我发现 Which icon sizes should my Windows application's icon include? 非常有用的 Windows 使用的图标大小列表,但我不知道如何提供它们,以便 Windows 可以选择特定任务所需的大小。

如果有人就此事提供任何建议或帮助,我将不胜感激。我不知道我说得有多清楚,所以如果有人想让我澄清任何事情,请不要犹豫。

另外,如果有人知道这是否适用于 Mac,或者我如何调整我的代码以使其适用于 OS X,请您也告诉我。

更新:这是针对我的 Java Swing 应用程序的

【问题讨论】:

  • 顺便说一句 - 您指的是基于 Swing 或 AWT 的 GUI,还是其他?

标签: java windows macos swing icons


【解决方案1】:

Window.setIconImages(List)。根据平台功能,不同尺寸的几个图像之一可能用作窗口的图标。 File Browser GUI 线程上有一个示例。此图显示了用于 GUI 的小图标,在窗口之间使用 alt-tab 键时会看到较大的图标。

如果图像不是正方形,Windows 会填充它。

Java Web Start 为用于桌面快捷方式和菜单项的多种图标大小提供了类似的选项。


Re: 图片命名:

  1. fb-icon-16x16.png
  2. fb-icon-32x32.png

..文件名或任何东西都没有关系 - windows 只是根据图像大小选择图标?

是的,选择文件名以包含大小信息是为了开发人员的利益。我们可以称图像为:

  • icon-small.png
  • icon-medium.png

.. 它的工作原理是一样的。 JRE 将根据加载后测量的图像的实际大小进行选择。但是,我强烈建议在图标图像名称中添加类似 -16x16 的内容以使其明确。 “小图标”的大小会随着时间和设备的变化而变化。

如果您不提供多种尺寸,会发生什么情况?

JRE 或系统将根据不受开发人员控制的算法缩放一个图像。例如如上。

如果图像不是矩形,Windows 将填充它。

我有一个 DukeBox 播放器,它试图拾取适用于正在播放的曲目的曲目或专辑封面。它不仅在声音轨迹的顶部显示图像,而且将其设置为(单)帧图标。 Windows(至少)将缩放到大小,并为任何非方形图像填充透明度。 Windows 甚至可以处理具有部分透明度的 PNG。

OTOH,AFAIU OS X 不显示框架图标。由设计决定。我不知道这是否会导致图标根本不出现。你需要 Mac 的建议。大师以获得更好的信息。在那。

由于系统会自行(不一定是最优)决定如何缩放图标,因此最好尽量减少机会,并尝试为每个平台提供合适大小的图标。如果他们有一个共同的大小或 3,你很幸运。

另请参阅:Sizes of frame icons used in Swing 问答。

【讨论】:

  • 感谢安德鲁。一如既往,一个绝妙的答案和很好的例子。可以肯定的是,文件名或其他任何内容都无关紧要 - Windows 只是根据图像大小选择图标?
  • 是的,为了开发者的利益,选择文件名包含大小信息。我们可以将图像称为icon-small.pngicon-medium.png.. 它会工作一样。 JRE 将根据加载后测量的图像实际大小进行选择。但是,我强烈建议将 -16x16 之类的内容添加到图标图像名称中以使其明确。 “小图标”的大小会随着时间和设备的变化而变化。 ;)
  • 感谢您的确认。无论如何,为了我的利益,我打算在文件名中包含大小,但我只是在检查。出于好奇,当您不提供多种尺寸时会发生什么?
【解决方案2】:

如果您使用 SWT 开发一个 java 应用程序,您可以在 shell 上设置一个图像数组。

【讨论】:

  • 图像必须采用什么格式、顺序和/或名称。“在外壳上”是什么意思
  • 你好像用swing开发java应用。请使用 API:Window.setIconImages(List)
  • 是的。对不起,我没有在我的问题中包含这个细节。我正在使用摇摆。 Andrew Thompson 的回答现在对我有帮助,但非常感谢你的回答。
猜你喜欢
  • 2016-01-16
  • 2019-02-05
  • 2015-07-17
  • 2013-12-05
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-12-25
  • 2012-02-06
相关资源
最近更新 更多