2016-04-25 5 views
1

Javaでスイングを使用して簡単なGUIを作成していて、フレームにバナーとしてJPEG画像を表示したいだけです。イメージは正常に動作していますが、ファイルパスは他の人に送信されるため、変更される可能性があります。画像は、私が他人に送るフォルダに保存されています。私は、フォルダがどの場所に移動しても、画像が表示されるようにする方法を探しています。私はこのサイトを初めて利用しており、かなり新しいJavaです。事前にお手伝いいただきありがとうございます。java - 変更可能な画像ファイルパスを読み取る

関連するコード:

ImageIcon numberImage = new ImageIcon("C:\\Users\\Me\\Desktop\\numberGame\\numbers.jpg"); 
Image image = numberImage.getImage(); 
Image newimg = image.getScaledInstance(300,120,java.awt.Image.SCALE_SMOOTH); 
numberImage = new ImageIcon(newimg); 
JLabel imageLabel = new JLabel("", numberImage, JLabel.CENTER); 
JPanel imagePanel = new JPanel(new BorderLayout()); 

imagePanel.add(imageLabel, BorderLayout.CENTER); 
+0

クラスパスにイメージを置くと、classpath:/package/name/file.jpg "パスを介して常に利用可能になります。あなたのプロジェクトを構築するためにmavenを調べることができます。 –

+1

[Java Swing:Jar内からの画像の表示]の可能な複製(http://stackoverflow.com/questions/31127/java-swing-displaying-images-from-within-a-jar) – nhouser9

+0

@ nhouser9ただし、プログラムがJarの中にない場合、相対パスを指定するだけでこの問題が解決するはずです。私はそれが瓶でなければ、解決はかなり簡単だと思います。 – rpfc

答えて

1

イメージをすべてのコンテキストで確実に表示するには、絶対パスではなく相対パスを指定する必要があります。

ImageIcon numberImage = new ImageIcon("numbers.jpg"); 

そして、これは(他の異なるパスで)他のコンテキストで動作するはずです:

ImageIcon numberImage = new ImageIcon("C:\Users\Me\Desktop\numberGame\numbers.jpg"); 

へ:

あなたが変更することができます。 イメージがプログラム内のディレクトリにある場合は、"\ imageFolder \ numbers.jpg"と入力します。

これはうまくいくはずですが、主な変更は絶対パスを相対パスで置き換えることです。

+0

私のすべての検索では、これほど簡単な解決法は見ていませんでした。ありがとうございました – Justiciar