Javaの画像表示プログラムについての疑問

このQ&Aのポイント
  • Javaの文法について教えてください。JAVAを学習しはじめたばかりの初心者です。
  • 下記のプログラムに関してわからないので教えてください。イメージを表示するためにimport java.awt.Graphicsをインポートして、Image imでオブジェクトを宣言するのはわかるのですが、なぜインスタンス化の必要がないのでしょうか?
  • import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public class MyImage extends Applet{ Image im; public void init(){ im = getImage( getDocumentBase(), "test/test.gif" ); } public void paint(Graphics g){ g.drawImage( im ,10,10, this); }
回答を見る
  • ベストアンサー

JAVAの文法について教えてください。

JAVAを学習しはじめたばかりの初心者です。 下記のプログラムに関してわからないので教えてください。 下記はtest.gif画像を表示するプログラムなのですが、 イメージを表示するために import java.awt.Graphicsをインポートして、 Image im でオブジェクトを宣言するのはわかるのですが、 通常はこの後に im = new Image() のようにインスタンス化する必要があると思うのですが、 このプログラムにはありません。 なぜ不要なのでしょうか? ********************** import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; public class MyImage extends Applet{ Image im; public void init(){ im = getImage( getDocumentBase(), "test/test.gif" ); } public void paint(Graphics g){ g.drawImage( im ,10,10, this); } }

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.2

>getImage() メソッドの戻り値がImage型なので、 >わざわざインスタンスを作成しなくてもよいということでしょうか? 逆です。getImage() メソッドの中で Image 型のインスタンスを作成して返すから戻り値を Image 型にしているのです。 getImage() メソッドを呼び出すということはそのメソッドに Image 型インスタンスの作成を依頼することです。 自分で作るか他のメソッドに作成を任せるかの差はあれど、クラスのインスタンスは作成しないと使用できません。

mikeyan
質問者

お礼

私の文章が不十分でした。 メソッドの方でインスタンス化してくれるから、 自分でインスタンス化する必要がないということですね。 よく理解できました。 ありがとうございました。

その他の回答 (1)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

getImage()メソッド(あるいはそこから呼び出される何らかのメソッド)の中でインスタンス生成をしているだけです。

mikeyan
質問者

補足

回答ありがとうございます。 getImage() メソッドの戻り値がImage型なので、 わざわざインスタンスを作成しなくてもよいということでしょうか?

関連するQ&A

  • JavaAppletのプログラム添削をお願いします

    初心者です。宜しくお願いします。 JAVA Appletで、クリックするたびに画像が変わるものを作りたいのですが、上手くいきません。 プログラムの添削をお願い致します。 JAVA Appletを利用し、画面をクリックするたびに画像が変わるアプリを作りたいのですが、上手くいきません。 ※コンパイルは通るのですが、実行しても何も表示されません。 [参考URL]http://www.geocities.jp/supermisosan/javastudy/mousechange.html この、画像を変えただけのものを作れればOKです。 以下、今私の書いたプログラム内容です。 書いたと言っても、コピペして部分部分を変えただけですが‥。 【click.java】 import java.applet.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class click extends JApplet implements MouseListener { Image siro,kiiro,aka2,img; int x=0; Image image[]=new Image[5]; Graphics g; public void init() { addMouseListener(this); image[0]=getImage(getDocumentBase(),getParameter("siro.gif")); image[1]=getImage(getDocumentBase(),getParameter("kiiro.gif")); image[2]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[3]=getImage(getDocumentBase(),getParameter("aka2.gif")); image[4]=getImage(getDocumentBase(),getParameter("aka2.gif")); setBackground(Color.white); } public void paint(Graphics g) { g.drawImage(image[x],0,0,this); } public void mouseClicked(MouseEvent me) { x++; if(x==5) x=0; repaint(); } public void mouseEntered(MouseEvent me) { } public void mouseExited(MouseEvent me) { } public void mousePressed(MouseEvent me) { } public void mouseReleased(MouseEvent me) { } } 【click.html】 <html> <head> <title>test applet</title> </head> <body> <applet code="click.class" width=500 height=500> </applet> <hr> <a href="click.java"> source file </a> </body> </html> 何が足りないのでしょうか? 勉強不足ですみません、宜しくお願い致します!!

  • インターネット上の画像をJavaで処理する方法について

    こんにちは! いつもお世話になってます(^^) mkimさんのおかげでマウスでブラウザ(IE5.0)上の灰色の部分の座標値を得ることはできました(^o^) 私の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=77352 しかし、その灰色の部分に画像を貼り付け、その画像の座標値を得たいのですが、画像をうまく貼り付けることができません。 javaファイルのと同じディレクトリにあるローカルな画像は貼り付けて座標値を得ることができたのですが、インターネット上にある画像を貼り付けることができませんでした。 最終的にはライブカメラの画像を貼り付けようと考えているので、これができないと先に進むことができません。 誰かご存知でしたら教えてください(^^) わかりにくい質問でごめんなさいm(__)m 一応、うまくいかなかったjavaファイルを載せておきます。 // My_Image03.java import java.awt.Graphics; import java.applet.Applet; import java.awt.Image; public class My_Image03 extends Applet { Image im; public void init() { im = getImage(getDocumentBase(), "http://www.honda.co.jp/image/b_hmark.gif"); } public void paint(Graphics g) { g.drawImage(im, 10, 10, this); } } 構文が間違っているのでしょうか? 回答、お待ちしております(^o^)丿

    • ベストアンサー
    • Java
  • 画像表示アプレットプログラムについて

    Javaのプログラムを勉強中です。 javaを理解するために下記のプログラム(zukei.java)を作成しました。 このプログラムを実行(appletviewer zukei.java)すると エラーにはなりませんが、(3)の行により画像("b.jpg")がすぐには表示されません。表示されたWindowにほかのWindowをいったんのせてから動かすと(3)行により画像"b.jpg"が表示されます。 (1)(2)の行は最初からうまく動作して表示されます。 もちろん(3)のappletをthisにするとうまく動作します。 理由がわかりません。 どなたかご教授ください。 プログラム zukei.class *<APPLET CODE="zukei.class" WIDTH=500 HEIGHT=500></APPLET> */ import java.applet.*; import java.awt.Graphics; import java.awt.*; public class zukei extends Applet { Applet applet; Image myimage; int iKai; public zukei(){ applet = this.applet; } public zukei(Applet applet) { this.applet = applet; } public void init(){ iKai = 0; myimage = getImage(getDocumentBase(),"b.jpg"); } public void paint(Graphics g) { kaku(); //(1) g.drawArc(100,150,50,50,0,360); //(2) g.drawImage(myimage,10,300,180,180,applet); //(3) } public void kaku(){ System.out.println("ABC" + iKai++); } }

  • Javaを説明するには

    4枚の絵をパラパラアニメにするソースなのですが。これをわけ合って説明しなくてはならなくなってしまいました。 薄らぼんやりとはわかるのですが。どう説明したらいいのかさっぱり分かりません、どう説明すれば、分かりやすく正しく伝えられるでしょうか?>< import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class DNA extends Applet implements Runnable, ActionListener { Image image[] = new Image[4]; int[] timing = { 400,350,230,350}; Thread t; int index1 = 0; int no = 0; private static final long serialVersionUID = 1L; public void init(){ for(int i = 0; i<4; i++){ image[i] = getImage(getDocumentBase(),"img"+(i)+".gif"); } } public void paint(Graphics g){ g.drawImage(image[index1],0,0,this); } public void update(Graphics g) { paint(g); if(++no==4)no=0; } public void start(){ t = new Thread(this); t.start(); } public void run() { while(true){ index1++; if(index1 == 4){ index1 = 0; } repaint(); try{ Thread.sleep(timing[no]); }catch(InterruptedException e){} }} public void actionPerformed(ActionEvent arg0) { } }

  • appletの画像が表示されない

     画像を表示するappletを作ったんです。  コマンドのappletviewerでは確認出来るんですが、IEでは何故か表示されません。何故なんでしょう?  WINXP/IE6.0.2600です。  以下にコードを記述します。 import java.awt.*; import java.applet.*; public class test extends Applet {  Image img;  public void init() {   img = getImage(getDocumentBase(), "test.PNG");  }  public void paint(Graphics g) {   g.drawImage(img, 10, 10, this);  } }

    • ベストアンサー
    • Java
  • javaで画像出力

    javaでプログラムを書いて画像をGIF、JPG、BMPなどの形式で表示させたいのです。 appletでは下記のプログラムで円を表示することができたので、これを他の形式で表示する方法を教えて下さい。 import java.applet.*; import java.awt.*; public class Sample1 extends Applet { public void paint(Graphics g) { g.fillOval(120,40,70,50); } }

  • 【Java】画像表示が出来ない!

    Java初心者です。 Eclipseを使って、Javaアプレットでjpeg画像を表示させようとしたのですが、上手くいきません。表示したい画像をインポートして、このようなコードを書きました。 import java.applet.Applet; import java.awt.*; /* <applet code="クラス名.class" width="497" height="600"> <param name="img" value="img/test.jpg"> </applet>*/ public class クラス名 extends Applet { Image img; public void init() { img = getImage(getDocumentBase() , getParameter("/test.jpg")); } public void paint(Graphics g) { g.drawImage(img , 0 , 0 , this); } } Javaアプレットで実行しても、アプレットは真っ白なままです。GIF画像でも試してみましたが、同じく失敗でした。他のJavaアプレットのプログラム(図形を表示したり)は成功したので、私のパソコンのJavaは問題ないと思います。回答よろしくお願いします。

    • ベストアンサー
    • Java
  • getDocumentBase() でエラーがでます

    getDocumentBase() でエラーがでます 下のように書いているのですが getDocumentBase() でエラーがでて困っています 他のところは動いてて それに追加しました 何が原因なのでしょうか? import java.awt.*; import java.awt.event.*; import java.applet.Applet; public class window { public static void main( String[] args ) { AppFrame f = new AppFrame(); image i = new image(); i.init(); f.setSize( 200, 200 ); f.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e) { System.exit(0); } } ); // f.show(); f.setVisible( true ); } } class image extends Applet { Image image; image() { } public void init() { image = getImage( getDocumentBase(), "image.jpg" ); } ...

  • アプレットで再描画をする時ちらつく

    Javaアプレットで題名の通り再描画をするときにちらつきます。 ソースコードは大まかに表すとこのような感じです。 /*test.java*/ import java.applet.* import java.awt.Image; public class test extends Applet implements Runnable{  int a = b = c = d = e = f = g = h = 0;  Thread th;  Image im;  AudioClip au;  public void init(){   im = getImage(getDocumentBase('image.gif'););   au = getAudioClip(getDocumentBase('test.wav'););   a = c = e = g = 0;   th = new Thread();   th.start();   au.loop();  }  public void run(){   try{    while(true){     repaint();    }   }catch(){例外処理}  }  public void stop(){   au.stop();  }  public void paint(Graphics g){   g.drawImage(im,a,b,c,d,e,f,g,h);  } } ※ test.gif = 6KB test.wav = 400KB ついでに書いておきます。 OS:Me CPU:AMD アスロン 800MHz メモリ:256MB 起動時のリソース残量:77% 上のソースコードはうろ覚えなので、 間違えている箇所があるかもしれませんが、 コンパイルは正常に終了し、起動時エラーもありません。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Javaプログラムの繋げ方について。

    Javaプログラムの繋げ方について。 今まで(1)のようなプログラムを書いていました。 作りたいものに向けて色々検索するとやりたいものに近い(2)のようなサンプルプログラムを見つけました。 しかし、Java初心者なもので混ぜ方(?)がわかりません。 現在の私の知識からいうと今までのはアプレットでフレーム使うのはアプリケーションなのかな?別物なのかな?そんな感じです。 もし、混ぜることができるなら何かアドバイスをお願いします。 (1)package test; import java.applet.* ; import java.awt.Label ; import java.awt.Font ; import static java.awt.Font.BOLD ; import java.util.*; import java.awt.Graphics; import java.awt.Image; import java.awt.*; public class test extends Applet{ public void paint(Graphics g){ g.setColor(Color.red); g.fillOval(320, 200, 100, 100); } public void init () { ~~~~~~~~~~~~~~~~ } public void start () { ------------ }}} (2)import java.awt.*; import java.awt.event.*; public class MouseEvent7 extends Frame { int posX = 50; int posY = 50; public static void main(String [] args){ new MouseEvent7(); } //コンストラクタ MouseEvent7(){ this.addWindowListener(new WinAdapter()); //ウィンドウリスナーの登録 this.setSize(200,200); this.setVisible(true); //MouseMotionListenerの登録 addMouseMotionListener( new MouseMotionAdapter(){ public void mouseMoved(MouseEvent e){ posX = e.getX(); posY = e.getY(); repaint(); //paintメソッドを実行 } } ); } public void paint(Graphics g){ g.drawOval(posX,posY,50,50); } } (1)の内容に本当に(2)のプログラムで出来るマウスの動きに合わせて円も動く+クリックしたらそこで止まるだけいいのですが。 出来たら止まった点の座標も取りたいですが、そこまではいってません;;