BufferedImage img = ImageIO.read(new File("index.jpg"));
分析:
这将创建一个BufferedImage
变量称为img
,我们可以认为这是持有需要Java来显示的数据的对象图片,a BufferedImage
as per docs:
BufferedImage
小类描述了具有可访问的 图像数据缓冲区的Image
。 A BufferedImage
由一个ColorModel
和 一个图像数据的光栅组成。
该类基本上包含的方法来帮助我们读取和写入图像,而无需我们自己的每一次写,As per docs:
含有的静态便捷方法用于定位 ImageReaders
和ImageWriters
,并执行简单编码和 解码。
这里面ImageIO
一个public
static
方法因此可在不new
关键字来访问。它可以让我们在我们想为Image
使用该文件的数据读取和返回它读取的数据(因此,我们把它保存在一个变量)为per docs:
返回一个BufferedImage,作为解码的结果一个提供的文件 从当前 注册的自动选择的ImageReader。该文件包装在ImageInputStream中。
参数:input - 要读取的文件。
返回:一个包含输入解码内容的BufferedImage,或者为null。
抛出:IllegalArgumentException - 如果输入为空。 IOException - 如果在读取期间发生错误 。
new File(String filename)
是在类File非静态方法,因此必须用新创建的实例(new
)进行访问。它使我们能够创建该文件的引用,这样我们就可以在File
实例上执行操作(即阅读,写作等)as per docs:
由给定路径名字符串 转换为抽象创建一个新的文件实例路径名。如果给定的字符串是空字符串, 那么结果是空的抽象路径名。
参数:路径 - 一个路径名字符串
抛出:NullPointerException - 如果路径参数为null现在
,当你调用setIconImage(img)
所有我们从文件中读取数据(这是我们的图片和被转换为BufferedImage
)将用于显示图片作为JFrame
的图标。
另一种方式来做到这一点是:
// Create frame
String title = "Frame Title";
JFrame frame = new JFrame(title);
// Set icon
Image icon = Toolkit.getDefaultToolkit().getImage("icon.gif");
frame.setIconImage(icon);
1)请向JavaDocs咨询这些事情的最初解释。2)'framOne'有一种难闻的气味。永远不应该有'framTwo'。请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/a/9554657/418556)3)该代码在部署时可能会失败。该图像将成为一个嵌入式资源,并应通过URL访问。 4)尊重美国东部时间的规则! –