java swingでGUIをプログラミングしている者です。
JLabelにImageIconの画像を貼り付けるプログラムです。↓
//画像を表示するプログラム
//インポート
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class gazopro extends JFrame{
JLabel l1;
JButton b1;
JPanel p;
public static void main(String args[]) {
//ウィンドウを作成また設定
gazopro frame = new gazopro();
frame.setBounds(300,200,700,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
gazopro(){
//コンポーネントを作成
p = new JPanel();
add(p);
b1 = new JButton("画像を表示");
p.add(b1);
ImageIcon icon = new ImageIcon("image.jpg");
l1 = new JLabel(icon);
p.add(l1);
}
}
わからないところは、ImageIcon icon = new ImageIcon("image.jpg");のところです。
ImageIconの引数は、プログラミングを行っているパソコン(OS は Windows)のマイコンピューター→
Cドライブ→ MyJava→ image.jpgを指定しましたがこれで合ってますか?
このプログラムでは、画像が表示されませんでした。
どうすればいいでしょうか?
解説と、ご指導宜しくお願いします。
No.2ベストアンサー
- 回答日時:
OSには、「カレントディレクトリ」というものがある。
「作業フォルダ」とか「実行時ディレクトリ」とか呼ばれることもある。
ファイルの指定方法には主に次の3つ
・絶対パス
・相対パス
・ファイル名だけ
絶対パスは絶対的な一番上(ルートディレクトリ)から指定するもの。
相対パスは、カレントディレクトリをスタート地点にして、そこからの相対的な位置関係(上とか下とか)で指定するもの
ファイル名だけの場合は、特に指定がなければ、相対パスに準じる。
「ファイル名だけの場合は、○○ディレクトリから検索する」等とマニュアルにあればそこから探す。
で、Swing.ImageIconのコンストラクタのマニュアルを読む
http://docs.oracle.com/javase/jp/6/api/javax/swi …
ファイル検索場所について、特に明記されていないので、
「ファイル名だけの場合は、特に指定がなければ、相対パスに準じる。」
→「相対パスは、カレントディレクトリをスタート地点にして、そこからの相対的な位置関係」
→「カレントディレクトリにある『ファイル名』のファイル」
となる。
以上のようなファイルやディレクトリについての動作は、Java全般(さらに言えば、コンピュータでのプログラム全般)について言えることです。
ファイルを読み書きするときの基本中の基本です。
しつこいようですが、まずは基本を勉強しましょうよ。
GUIの入門書や解説サイトは「Java自体はマスターしている」ことが前提で書かれてるので、このようなファイル操作の基本とか、オブジェクト指向とかについて、まったくと言っていいほど解説していません。そんなのを見様見真似でやったって、理解できるわけがありません。
足し算が理解できてないのに、教科書に載ってた微分方程式を書き写して出来る気になってるようなもんです。
No.1
- 回答日時:
デフォルトでは、プログラムのある階層にあるファイルを検索しますから、ホームディレクトリ内にあるファイルは読めません。
これは、System.getPropertyを使ってホームディレクトリのパスを取得し、それにファイル名などを付け足してファイルのフルパスを生成して利用すればいいでしょう。String filepath = System.getProperty("user.home") + File.separator + "image.jpg";
こんな感じでホームディレクトリにあるimage.jpgのファイルパスが得られると思いますので、それを指定して読み込んでみてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
OLE又はDDEを使うVISUAL BESIC...
-
eclipseで作ったプログラムを他...
-
VC++から引数付きexeファイルの...
-
デスクトップにショートカット...
-
VB6で、C言語の(argv,argc)み...
-
LINK : fatal error LNK1104に...
-
JAVAのAPIのコールの仕方で質問...
-
64bit環境で32bitのodbc参照
-
ファイル名の先頭が数字だと駄...
-
フォルダ内の特定 拡張子のファ...
-
xismoについてです!開こうとす...
-
vscodeを最近いれてjavaを勉強...
-
ディレクトリを変更して外部コ...
-
SHELLを使ったファイル起動につ...
-
jarファイルをダブルクリックで...
-
htaファイルが実行されません
-
コンポーネント`MSCOMM32.cox'...
-
VBAで他のプログラムが起動して...
-
VBからhtaファイルを開くには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access クエリ実行が急に非常に...
-
JavaScriptでコマンドプ...
-
OLE又はDDEを使うVISUAL BESIC...
-
VC++から引数付きexeファイルの...
-
VBAでEXEファイルを動かす方法...
-
LINK : fatal error LNK1104に...
-
64bit環境で32bitのodbc参照
-
WScript.Echo と msgbox
-
batからexeを実行し戻り値を受...
-
VBAでMP3を鳴らしたい
-
コマンドプロンプトで外のexeや...
-
batからexeを起動した際の戻り...
-
VBS形式ファイル:ダブルクリッ...
-
jarファイル実行時の環境変数の...
-
JAVA .jarファイルに再圧縮する...
-
jarファイルとjava.exeの関連付...
-
VBSでEXCELのXLSTARTにあるマク...
-
コンポーネント`MSCOMM32.cox'...
-
ローカルのHTMLからexeファイル...
-
c/c++ ビルドしたにもかかわら...
おすすめ情報