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

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

Javaの課題丸投げコミュの教えていただきたいです。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
大学の課題でモデル通りの図形描画アプリを作れという課題を出されたのですが、
特定のボタンを押した時に図形の色を変更するところがうまくいきません。

私の駄文ですが、コンパイルは(なぜか)できていて後は色が変更できればいいところまで出来ています。(多分ですが)

以下、私が書いたプログラムです。
import java.awt.*;
import java.awt.event.*;
public class Ensyu04Frame extends Frame implements MouseListener,WindowListener, KeyListener {
Color color;
int x1, y1, x2, y2;
int zukei;
public Ensyu04Frame() {
color = Color.BLACK;
zukei = 1;
addWindowListener(this);
addMouseListener(this);
addKeyListener(this);
}

public void paint(Graphics g) {

if(zukei == 1) {
g.drawLine(x1,y1,x2,y2);
} else if(zukei == 2) {
g.fillOval(x1,y1,x2-x1,y2-y1);
} else if(zukei == 3) {
g.fillRect(x1,y1,x2-x1,y2-y1);
}
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}

public void keyPressed(KeyEvent e){
if (e.getKeyCode() =='1') {
zukei = 1;
} else if(e.getKeyCode() == KeyEvent.VK_2) {
zukei = 2;
} else if(e.getKeyCode() == '3') {
zukei = 3;
}


if(e.getKeyCode() == KeyEvent.VK_R) {
color = Color.RED;
} else if(e.getKeyCode() == KeyEvent.VK_G) {
color = Color.GREEN;
} else if(e.getKeyCode() == KeyEvent.VK_B) {
color = Color.BLUE;
} else if(e.getKeyCode() == KeyEvent.VK_K) {
color = Color.BLACK;
}
repaint();
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e){}
public void mousePressed(MouseEvent e) {
x1=e.getX();
y1=e.getY();
}
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
repaint();
}

public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}


}

メインメソッド↓

public class Ensyu04 {
public static void main(String[] args) {
Ensyu04Frame f = new Ensyu04Frame();
f.setSize(800, 600);
f.setTitle("お絵かきアプリケーション");
f.setVisible(true);
}
}

※ 楕円と矩形は右下から左上へ描画された時は表示できないが、今回はこれでよ
いとされてます。


いくらR、G、B、押しても黒のままです・・・。

すみません、どなたかご教授いただけないでしょうか。

コメント(3)

初めまして。

先ず、こちらの環境ではコンパイルが通りませんでした。
そこを直された方が良いのでは?
そちらで動いてるなら、ゴメンさいですが(^^;

こちらの環境:XP PRO SP2、JDK6


paintメソッドの中で色の指定をしていないのが原因です。

パッと見た感じですが
paintの中にg.setColor(color);
を追加すればいけそうな感じがします。

色を指定した後に描画するものは、指定した色になります。
>>バートンさん
ありがとうございます。
私の環境は、XPHomeSP2、JDK6で動きました。

>>SIEGさん
paintメソッドの中にg.setColor(color);を追加したところ、ちゃんと動きました!!

KeyPressedメソッドの中で色を指定しても、paintメソッドで色について記述してなかったので色が変更されなかったのですかね。


お二方とも分かり易いご指摘本当にありがとうございます。
稚拙な質問ですみませんでしたm(__)m

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

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

Javaの課題丸投げ 更新情報

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

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