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);
    }
}

このコードでは、JFrameアイコンの代わりに JPG 画像が表示されます。ただし、回線の機能については知りたいですBufferedImage img = ImageIO.read(new File("index.jpg"));。何か助けていただければ幸いです。私はswingが初めてです。

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)、ファイルから読み取った画像を取得し、それをフレームのアイコンに設定する呼び出しを行います。

于 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は、ColorModelと画像データのラスターで構成されます。

  • ImageIO

このクラスには基本的に、毎回独自に書き込むことなく画像を読み書きするのに役立つメソッドが含まれています

ImageReadersとを検索しImageWriters、単純なエンコードとデコードを実行するための静的な便利なメソッドを含むクラス 。

  • read(File input)

これはpublic static内部のメソッドであるため、キーワードImageIOなしでアクセスできます。newこれにより、使用するファイルのデータを読み込むことができ、ドキュメントに従ってImage読み込んだデータを返します(したがって、変数に保存します)。

現在登録されているファイルの中から自動的に選択されたImageReaderを使用して、提供されたファイルをデコードした結果としてBufferedImageを返します。ファイルはImageInputStreamにラップされています。

パラメータ:input-読み取るファイル。

戻り値:入力のデコードされた内容を含むBufferedImage、またはnull。

スロー:IllegalArgumentException-入力がnullの場合。IOException-読み取り中にエラーが発生した場合。

  • new File(String filename)

はクラスFileの非静的メソッドであるため、新しく作成されたインスタンス(new)でアクセスする必要があります。これにより、ファイルへの参照を作成できるため、ドキュメントに従ってFileインスタンスで操作(つまり、読み取り/書き込みなど)を実行できます。

指定されたパス名文字列を抽象パス名に変換して、新しいFileインスタンスを作成します。指定された文字列が空の文字列である場合、結果は空の抽象パス名になります。

パラメータ:pathname-パス名文字列

スロー:NullPointerException-パス名引数がnullの場合

setIconImage(img)これで、ファイルから読み取ったすべてのデータ(画像であり、に変換された)を呼び出すと、画像がsアイコン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);
于 2012-09-15T16:33:14.843 に答える
0

例外を処理する必要があることに注意する必要があります。IMHO、コードは次のように記述したほうがよい場合があります。

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

于 2015-01-13T17:39:12.770 に答える