Javaプロジェクトで使用する画像ファイルを保存する場所が必要です(画像をパネルにロードするだけの非常に単純なクラス)。私はいたるところを見てきましたが、これを行う方法を見つけることができません。どうすればいいですか?
プロジェクトに新しいフォルダーを追加し、プロジェクトに新しいクラスフォルダーを追加し、プロジェクトに新しいソースフォルダーを追加しようとしました。私が何をしても、常にIOException
を受け取ります。フォルダーは常にビルドパス上にあると言うので、何をすべきかわかりません。
import Java.awt.Color;
import Java.awt.Dimension;
import Java.awt.Graphics;
import Java.awt.image.BufferedImage;
import Java.io.File;
import Java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class PracticeFrame extends JFrame{
private static BufferedImage image;
Thread thread;
public PracticeFrame() {
super();
setPreferredSize(new Dimension(640,480));
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main (String[] args) {
PracticeFrame pframe = new PracticeFrame();
try {
image = ImageIO.read(new File("/islands.png"));
} catch (IOException e) {
e.printStackTrace();
}
JPanel panel = new JPanel() {
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(image,0,0,null);
}
};
panel.setBackground(Color.BLUE);
panel.repaint();
pframe.add(panel);
}
}
編集:私のために働いた何か、そして私はクラスフォルダとしてmain/res/
フォルダを追加し、それを削除していた理由がわかりません。 /main/res/
がクラスフォルダーとしてビルドパスの一部であるときに実行しましたが、まだ機能しませんでした。追加すると、除外されたフィルターについて何かを知らせるポップアップが表示されました。しかし、ビルドパスのライブラリからフォルダを削除し、ファイルパスを次のように変更したとき:
image = ImageIO.read(new File("src/main/res/islands.png"));
少なくともIOException
がスローされるのを止めました。画像が表示されないため、画像をパネルに正しく追加してはいけませんが、少なくともファイルは見つかりました(私は思う)。
「リソースフォルダーの追加」で、ビルドパス->ビルドパスの構成->ソース(タブ)->フォルダーの追加->新しいフォルダーの作成
新しいフォルダ内に「my-resource.txt」ファイルを追加します。次に、コードで:
InputStream res =
Main.class.getResourceAsStream("/my-resource.txt");
BufferedReader reader =
new BufferedReader(new InputStreamReader(res));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
このトピックのタイトルに投稿された質問に答えるには...
ステップ1-> [Java Project]を右クリックし、[プロパティ]オプションを選択します
ステップ2->左側のメニューから[Javaビルドパス]を選択し、[ソース]タブにいることを確認して、[フォルダーの追加]をクリックします
ステップ3->ウィンドウの下部にある[新規フォルダの作成...]オプションをクリックします
ステップ4->「resources」として新しいフォルダの名前を入力し、「Finish」をクリックします
ステップ5->これで、Javaプロジェクトの下に新しく作成されたフォルダー「resources」が表示されます。「OK」をクリックし、もう一度「Ok」をクリックします
リソースフォルダーを追加した後、これを試してください:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("test.png");
try {
image = ImageIO.read(input);
} catch (IOException e) {
e.printStackTrace();
}
画像を読むためのフルパスを与えてみてください。
例image = ImageIO.read(new File( "D:/work1/Jan14Stackoverflow/src/Strawberry.jpg"));
完全なパスを指定した後、コードは例外を生成しません。 Javaコードの画像ファイルを単に読みたい場合。次を参照してください- http://docs.Oracle.com/javase/tutorial/2d/images/examples/LoadImageApp.Java
クラスのオブジェクトが最後に作成された場合、コードは私のためにうまく機能し、画像を表示します
// PracticeFrame pframe = new PracticeFrame();//comment this
new PracticeFrame().add(panel);