ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaの課題丸投げコミュの長方形を描画するプログラム

  • mixiチェック
  • このエントリーをはてなブックマークに追加
こんにちは。初めて質問させていただきます
ただいま大学の課題で長方形をアプレットによりマウス入力で複数描画するプログラムを作成していますがRectangleを配列にしたとたんコンパイルはうまくいくのですが実行するときにMotionListenerあたりでCMDがループを始めてしまいます。どなたか解決法を教えていただければうれしいです

import java.awt.*;
import java.applet.*;
import java.awt.event.*;


public class RectangleEditor extends Applet implements MouseMotionListener {
private final int MAX=10; // 描ける四角の最大数
private int num=0; // 描かれている四角の数
private Rectangle[] rect=new Rectangle[MAX]; // 座標を保持するための配列

// 初期化
public void init(){ // アプレットの初期化
setBackground(Color.white); // 背景色を白にしている
add(new Button("Clear")); // クリアボタンを追加
}
// 動作
public boolean action(Event ev,Object arg){
if(ev.target instanceof Button) // ボタンかどうかの判定
clear(); // 画面をクリアする
return true;
}
// マウスが押された
public boolean mouseDown(Event ev,int x,int y){
if(num<MAX){ // 最大数を超えていなければ、
addMouseMotionListener(this);
num++; // 四角の数を1つ増やす
repaint(); // 再描画する
}
return true; // 処理が正しく終了したら true を返す。
}
//長方形の作成
public void mouseMoved(MouseEvent e) {
rect[num].setLocation(e.getX() , e.getY());
}
public void mouseDragged(MouseEvent e) {
rect[num].setSize(e.getX() - rect[num].x , e.getY() - rect[num].y);
}

// クリア
private void clear(){
Graphics g=getGraphics(); // Graphics を取り出して、
g.setColor(getBackground()); // 描画色を背景色にして、
Dimension d=size(); // 大きさを取り出して、
g.fillRect(0,0,d.width,d.height); // その大きさの矩形を塗りつぶす。
g.dispose(); // Graphics を破棄する。
num=0; // 四角の数を0にする。
}
// 描画
public void paint(Graphics g){
g.setColor(Color.red); // 描画色を赤にして、
for(int i=0;i<num;i++){
g.drawRect(rect[num].x , rect[num].y , rect[num].width , rect[num].height);

}
}
}

コメント(3)

解決しました。ありがとうございました。
いろいろと盛大な間違いをしてましたorz

>こりにきさん
持っている本がアプレットについて詳しく載っていなくて手探り状態でした。
ちゃんと学んでみます。


>鳥猫さん
クリックするたびに繰り返してましたねorz
MouseListenerの使い方がわかってない上にMotionとの使い方の区別がついていませんでした。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Javaの課題丸投げ 更新情報

Javaの課題丸投げのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング