BufferedImage img = ImageIO.read(new File("index.jpg"));
分析:
这会创建一个BufferedImage名为 的变量img,我们可以将其视为一个对象,其中包含 java 显示图像所需的数据,BufferedImage 根据文档:
该BufferedImage子类描述了Image一个可访问的图像数据缓冲区。ABufferedImage由图像数据的 aColorModel和 Raster 组成。
此类基本上包含帮助我们读取和写入图像的方法,而无需每次都编写我们自己的方法,根据文档:
ImageReaders一个包含用于定位和ImageWriters以及执行简单编码和解码的静态便捷方法的类
。
这是一个public static内部方法,ImageIO因此可以在没有new关键字的情况下访问。它允许我们读取我们想要用作 a 的文件的数据,并根据 docsImage返回它读取的数据(因此我们将其保存在变量中):
返回一个 BufferedImage 作为使用从当前注册的那些中自动选择的 ImageReader 解码提供的文件的结果。该文件被包装在一个 ImageInputStream 中。
参数: input - 要读取的文件。
返回: 包含输入的解码内容的 BufferedImage,或 null。
抛出: IllegalArgumentException - 如果输入为空。IOException - 如果在读取过程中发生错误。
new File(String filename)
是类File中的非静态方法,因此必须使用新创建的实例 ( new) 来访问。它允许我们创建对文件的引用,以便我们可以按照文档File对实例执行操作(即读写等):
通过将给定的路径名字符串转换为抽象路径名来创建一个新的 File 实例。如果给定的字符串是空字符串,则结果是空的抽象路径名。
参数: pathname - 路径名字符串
抛出: NullPointerException - 如果路径名参数为空
现在,当您调用setIconImage(img)我们从文件中读取的所有数据(这是我们的图片并已转换为BufferedImage)时,将用于将图片显示为JFrames 图标。
另一种方法是:
// Create frame
String title = "Frame Title";
JFrame frame = new JFrame(title);
// Set icon
Image icon = Toolkit.getDefaultToolkit().getImage("icon.gif");
frame.setIconImage(icon);