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);
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Java 直し方について教えて頂きたいです。 4 2022/08/13 02:11
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シャットダウンフックが呼ばれない
-
ActionForm form にnullが入っ...
-
eclipseに記述したjavaファイル...
-
setAttribute(String, int)は適...
-
Selenium IDEでexportしたコー...
-
かなり初歩的なプログラミング...
-
ファイル名を動的に生成したい
-
アプレットを実行すると、×が表...
-
なんかエラーがでた
-
文字列を数式に
-
アルファベットのソート
-
透過GIFの判定の仕方ありますか?
-
HTMLでのTableタグデータ取得方法
-
VBAで配列の計算
-
配列にnullを代入すると、null...
-
ループ処理の際、最後だけ","を...
-
配列をセッションに割り当てた後で
-
1~100までの数字を表示し、か...
-
Log4jで機能毎に別ファイルへ出...
-
Junitテストでvoid戻り値メッソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
干支の計算で。。。
-
Selenium IDEでexportしたコー...
-
Javaを使ってデジタル時計を作...
-
ColabでのPytorchのエラー
-
importするには java.io.*; imp...
-
生年月日と今日の日付から年齢...
-
ファイル名を動的に生成したい
-
文字列を数式に
-
<forEach> 内で供給された "ite...
-
シャットダウンフックが呼ばれない
-
Javaからストアド実行(配列項目)
-
ActionForm form にnullが入っ...
-
setAttribute(String, int)は適...
-
(急募)JavaカレンダーをGUI可に...
-
文字サイズが可変のラベル
-
Java での グローバルIP取得
-
python OpenPyXLを使って出力結...
-
データの外挿について
おすすめ情報