- PR -

クラスの配列インスタンス

1
投稿者投稿内容
hema
会議室デビュー日: 2006/08/26
投稿数: 2
投稿日時: 2006-08-26 03:49
みなさんはじめまして。java超初心者のhemaです。この場でこんなに容易な質問をしてしまい申し訳ないのですが、どうしても行き詰ったためみなさんのお力お借りしたいです。
JFrameを使ってアプレットで簡単な図(fillOval)を表示させたいのですが、何も表示されないんです(コンパイルは通るのですが・・・)。プログラムの内容は下記に示しますようにGuiExampleクラスからPacManクラスを利用して表示させるという形です。自分で言うのもなんですがGuiExampleクラスのpaintメソッドでの”PacMan per[] = new PacMan[2];”あたりの配列インスタンス定義がおかしいのでしょうか??
すいませんがよろしくお願いします。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class GuiExample extends JFrame{
/*コンストラクタ*/
public GuiExample(){
setBackground(Color.white);
setSize(400,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/***paint***/
public void paint(Graphics g){

PacMan per[] = new PacMan[2];
per[0] = new PacMan(100,200);//パックマン1の定義
per[1] = new PacMan(200,200);//パックマン2の定義
per[2] = new PacMan(300,200);//パックマン3の定義

for(int i=0;i<3;i++){
per[i].draw(g);
}
}
public static void main(String[] args){
GuiExample w = new GuiExample();
w.setVisible(true);
}
}

/*パックマンクラス*/

class PacMan{
int x,y;//中心座標
PacMan(int a,int b){
x = a;
y = b;
}
public void draw(Graphics a){
a.setColor(Color.black);
a.fillOval(x,y,150,30);
}
}

unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-08-26 13:39
引用:

hemaさんの書き込み (2006-08-26 03:49) より:
JFrameを使ってアプレットで簡単な図(fillOval)を表示させたいのですが、何も表示されないんです(コンパイルは通るのですが・・・)。


些細なことですが、広い意味では「アプレット」なのかもしれませんが、通常はこれはアプレットとは呼ばないです(ブラウザー上で動かないので)。

引用:

hemaさんの書き込み (2006-08-26 03:49) より:
自分で言うのもなんですがGuiExampleクラスのpaintメソッドでの”PacMan per[] = new PacMan[2];”あたりの配列インスタンス定義がおかしいのでしょうか??


ここには個数を書くので 2 ではなく 3 になります。ちなみに、たとえば VB の配列だと 2 なのですが。
これを直すと一応、画が出ます。パックマンってこんな形でしたっけ?
なお、実行時に ArrayIndexOutOfBoundsException が出ていますので、まずは、それを検知してデバッグできる環境を整えられたほうがよいでしょう。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
hema
会議室デビュー日: 2006/08/26
投稿数: 2
投稿日時: 2006-08-26 18:11
unibonさん、大変参考になりました。ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)