アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaのアプレットに関する質問なんですが、今次の条件でアニメーションを作っているんですが、どうしても解決できない問題があります。
赤い長方形が左から右に動いていくプログラムを作成する。
・ 長方形が描画領域
の右端に消えると左端から再
度出現するようにせよ。
・ Reverseと書かれたボタンを押すと長方形の進行方
向が左右反対になる。
・ このとき、左右どちらの端に長方形が消えた場合も
反対端から長方形は出現する。
・ 長方形をクリック(ボタン押下)すると長方形の色が
変化する。
・ 赤い長方形であれば青に、青い長方形であれば赤
に変化する。

この条件でつくろうと思っているのですが、長方形をクリックしたときに、色の変化がどうしてもできません。どこに問題があるか分かりません。御教授お願いします。
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.awt.Button;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseListener;

public class Report2 extends Applet implements Runnable,ActionListener,MouseListener{
int x=100;
int y=50;
int width=80;
int height=120;
int dir=-2;
int w;
int z;
Button bt;
boolean direction;
boolean colorRed;
public void actionPerformed(ActionEvent ae){
if(direction==true){
direction=false;
}
else{
direction=true;
}
}
public void init(){
bt=new Button("Reverse");
add(bt);
bt.addActionListener(this);
Thread th;
th =new Thread(this);
th.start();

addMouseListener(this);
}
public void mouseClicked(MouseEvent e){
w=e.getX();
z=e.getY();
repaint();
if(e.getX()>=x && e.getX()<=x+width && e.getY()>=y && e.getY()<=y+height){
colorRed=!colorRed;
}
}

public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public void mousePressed(MouseEvent e){
w=e.getX();
z=e.getY();
repaint();
if(e.getX()>=x && e.getX()<=x+width && e.getY()>=y && e.getY()<=y+height){
colorRed=!colorRed;
}
}
public void run() {

while(true){
x++;
if(x==400){
x=-80;
}
if(direction==true){
x=x+dir;
}
else{

}
repaint();
try{
Thread.sleep(30);
}
catch(InterruptedException e){}

}
}

public void paint(Graphics g){
g.setColor(Color.white);
g.fillRect(0,0,400,200);
g.setColor(Color.red);
g.fillRect(x,y,80,120);
if(colorRed=true){
g.setColor(Color.red);

}
if(colorRed=false){
g.setColor(Color.blue);
}
g.fillRect(x,y,width,height);
g.setColor(Color.black);
g.fillRect(x,y,10,10);


}
}

A 回答 (1件)

paintメソッドの中の



> if(colorRed=true){
> g.setColor(Color.red);
> }
> if(colorRed=false){
> g.setColor(Color.blue);
> }

のif文のところ、colorRedに『代入して』います。
代入式の結果は代入した値となるので赤をセットするコードのみ実行されることになります。
    • good
    • 0
この回答へのお礼

ありがとうございました。
おかげで解決できました。

お礼日時:2009/10/22 21:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!