import javax.swing.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
class Two {
public static void main(String args[]) throws IOException
{
BufferedImage img = ImageIO.read(new File("index.jpg"));
JFrame frmOne = new JFrame("FACEBOOK");
frmOne.setIconImage(img);
frmOne.setExtendedState(JFrame.MAXIMIZED_BOTH);
frmOne.setVisible(true);
}
}
在此处的代码中,将显示JPG图像而不是JFrame
图标。但是,我想了解行BufferedImage img = ImageIO.read(new File("index.jpg"));
的功能。任何帮助将不胜感激,我是新手。
答案 0 :(得分:4)
代码BufferedImage img = ImageIO.read(new File("index.jpg"));
的工作原理如下:
BufferedImage img = ...
表示该行的其余部分应存储到变量中。
ImageIO.read(...
表示从给定文件中读取图片
new File("index.jpg")
说找到名为"index.jpg"
总的来说,它从index.jpg文件中加载图像并将此图像存储到BufferedImage img
中。然后,您可以调用frmOne.setIconImage(img)
来获取您从文件中读取的图像,并将其设置为框架的图标。
答案 1 :(得分:3)
setIconImage
方法更改JFrame
左上角显示的图像图标以及在应用程序之间切换时。另一个选择是:
frame.setIconImage(new ImageIcon("filename").getImage());
答案 2 :(得分:1)
BufferedImage img = ImageIO.read(new File("index.jpg"));
分析:
BufferedImage img
这会创建一个名为BufferedImage
的{{1}}变量,我们可以将其视为一个Object,它包含java显示图像所需的数据,img
as per docs :
BufferedImage
子类描述了一个可访问的BufferedImage
图像数据的缓冲区。Image
由BufferedImage
和ColorModel
组成 图像数据的栅格。
ImageIO
这个类基本上包含帮助我们读写图像的方法,而不必每次都写自己的As per docs:
包含用于定位的静态便捷方法的类
ImageReaders
和ImageWriters
,并执行简单的编码和 解码。
read(File input)
这是public
内的static
ImageIO
方法,因此无需new
关键字即可访问。它允许我们读取我们想要用作Image
的文件的数据,并将其读入的数据(因此我们将其保存在变量中)返回为per docs:
返回一个BufferedImage作为解码提供的File的结果 从当前的那些中自动选择的ImageReader 注册。文件包装在ImageInputStream中。
参数:input - 要读取的文件。
返回:包含输入的已解码内容的BufferedImage,或null。
抛出:IllegalArgumentException - 如果输入为null。 IOException - 如果有错误 在阅读期间发生。
new File(String filename)
是类File中的非静态方法,因此必须使用新创建的实例(new
)进行访问。它允许我们创建对文件的引用,以便我们可以在File
实例上执行操作(即阅读写作等)as per docs:
通过转换给定的路径名字符串来创建新的File实例 成为一个抽象的路径名。如果给定的字符串是空字符串, 那么结果就是空的抽象路径名。
参数:pathname - 路径名字符串
抛出:NullPointerException - 如果pathname参数为null
现在,当您致电setIconImage(img)
时,我们从文件中读取的所有数据(即我们的图片并转换为BufferedImage
)将用于将图片显示为JFrame
s Icon。
另一种方法是:
// Create frame
String title = "Frame Title";
JFrame frame = new JFrame(title);
// Set icon
Image icon = Toolkit.getDefaultToolkit().getImage("icon.gif");
frame.setIconImage(icon);
答案 3 :(得分:0)
需要提及的是,您必须处理异常。恕我直言,代码可能写得更好:
BufferedImage img = null;
try {
img = ImageIO.read(new File("youricon.png")); // get icon for JFrame
} catch (IOException e) {
e.printStackTrace();
}
frame.setIconImage(img); // set JFrame icon
此外,当您阅读文档时请注意.ico文件不由ImageIO()处理。使用.jpg,.png,.bmp或.gif文件。有关详细信息,请参阅http://docs.oracle.com/javase/7/docs/api/javax/imageio/package-summary.html。
HTH