我尝试查找多个关于如何在Java中更改程序图标的教程,但似乎都不起作用。我还想知道它可以是什么类型的图像,例如.ico或.png,并且必须是什么大小。
JFrame
,那么您需要使用setIconImage(java.awt.Image)
方法设置图标:File/InputStream/URL x = ...
Image icon = ImageIO.read(x);
frame.setIconImage(icon);
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
public class Main {
public static void main(final String[] args) throws Exception {
JFrame frame = new JFrame("Custom Icon");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
// something off the Google Images front page
final URL url = new URL("http://t3.gstatic.com/images?q=tbn:ANd9GcQbcDkaRcrbsYFUcE6Q7n56_LJr-r4mDqYTOTtPKG9J0MzZcV6V");
frame.setIconImage(ImageIO.read(url));
frame.setVisible(true);
}
}
编辑:如何获取您的图标的URL
您应该将图像文件(图标等)与源代码一起放置,可以放在您的src
文件夹中的自己的子文件夹中,并将它们作为“资源”进行访问。查看Java教程中的如何使用图标以获取到资源的URL
对象。
setIconImages(icons)
来设置多个图标。至少在Win7中,你希望窗口标题栏有一个16x16的图标,任务栏有一个32x32的图标。如果只设置一个16x16的图标,任务栏图标会看起来很糟糕。我想其他操作系统可能也需要不同的图标尺寸。 - Kevin KString
传递给ImageIO.read()
,它必须是一个InputStream
、URL
或File
对象。我在上面的答案中添加了一个完整的示例--我更新了我的答案,以展示如何获取图像资源的URL。 - Philipp ReichartsetImageIcon()/setImageIcons()
,这些不是静态方法。 - Philipp Reichart我认为@Philipp已经很清楚地表明了,x
必须是一个File
、InputStream
或URL
,而不是像你尝试的那样是一个String
。
现在,你还需要有一个Frame
或JFrame
才能有一个图标!
我假设这是在你的main
方法中。
要创建一个框架,请尝试
JFrame frame=new JFrame();
frame.setVisible(true);
跟着 @Philipp 的代码。
--
我突然想到你可能是指操作系统中程序快捷方式的图标。这不是在Java中完成的,而是在你的操作系统中完成的,除非你使用Java Web Start。