2
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图标。但是,我想知道 line 的功能BufferedImage img = ImageIO.read(new File("index.jpg"));。任何帮助将不胜感激,我是新手。

4

4 回答 4

4

该代码的BufferedImage img = ImageIO.read(new File("index.jpg"));工作原理如下:

  1. BufferedImage img = ...表示该行的其余部分应存储到变量中。

  2. ImageIO.read(...说从给定文件中读取图像

  3. new File("index.jpg")说找到名为的文件"index.jpg"

所以总的来说,它从 index.jpg 文件中加载一个图像,并将这个图像存储到BufferedImage img. 然后,您稍后只需调用frmOne.setIconImage(img)which 从文件中读取的图像,并将其设置为框架的图标。

于 2012-09-15T16:09:49.197 回答
3

该方法在应用程序之间切换时setIconImage更改显示在左上角的图像图标。JFrame另一种选择是:

frame.setIconImage(new ImageIcon("filename").getImage());
于 2012-09-15T16:06:52.803 回答
1

BufferedImage img = ImageIO.read(new File("index.jpg"));

分析:

  • BufferedImage img

这会创建一个BufferedImage名为 的变量img,我们可以将其视为一个对象,其中包含 java 显示图像所需的数据,BufferedImage 根据文档

BufferedImage子类描述了Image一个可访问的图像数据缓冲区。ABufferedImage由图像数据的 aColorModel和 Raster 组成。

  • ImageIO

此类基本上包含帮助我们读取和写入图像的方法,而无需每次都编写我们自己的方法,根据文档

ImageReaders一个包含用于定位和ImageWriters以及执行简单编码和解码的静态便捷方法的类 。

  • read(File input)

这是一个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);
于 2012-09-15T16:33:14.843 回答
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

高温高压

于 2015-01-13T17:39:12.770 回答