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

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

Javaの課題丸投げコミュの画面をクリックすると●が描写されるプログラム

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして!
わからないことがあったのでどなたか教えていただけないでしょうか?

今画面をクリックすると●が描写されるプログラムを作っています。
実行してみたところ、一度目のクリックではちゃんと描写されるのですが、
二度目のクリックのときに一度目の●が消えてしまうのです。

クリックする度に●が増えていくようなプログラムにするにはどうすればいいでしょうか??
わかる方いたらよろしくお願いしますm(__)m

念のため、自分で作ったプログラムも載せます。ご指摘お願いします!
↓↓

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
/*
<applet code="JaMous1.class"width=3300 height=100>
</applet>
*/

public class JaMous1 extends Applet implements MouseListener{
int x=-1,y;

public void init(){
addMouseListener(this);
}

public void paint(Graphics g){
if(x!=-1){
g.fillArc(x-12,y-12,30,30,0,360);
}
}

public void mouseEntered(MouseEvent me){
}

public void mouseExited(MouseEvent me){
}

public void mouseClicked(MouseEvent me){
x=me.getX();
y=me.getY();
repaint();
}

public void mousePressed(MouseEvent me){
}

public void mouseReleased(MouseEvent me){
}
}

コメント(14)

repaint();
の行を消してみては如何でしょう?
> rubさん
コメントしていただきありがとうございます。

消してみたところ最初の一回しか描写ができなくなりました(>_<)

一度描写した図を保持するようなメソッドがあればできそうな気はするんですが…
うーん…って感じです(T_T)
// 簡単な改造例として、5個まで表示します。

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

/*
<applet code="JaMous1.class"width=300 height=100>
</applet>
*/

public class JaMous1 extends Applet implements MouseListener{
int [] x = new int[5];
int [] y = new int[5];
int count, i;

public void init(){
addMouseListener(this);
count = 0;
}

public void paint(Graphics g){
for(i=0; i<count; i++){
g.fillArc(x[i]-12,y[i]-12, 30, 30, 0, 360);
}
}

public void mouseEntered(MouseEvent me){
}

public void mouseExited(MouseEvent me){
}

public void mouseClicked(MouseEvent me){
if(count < 5){
x[count] = me.getX();
y[count] = me.getY();
count ++;
}
repaint();
}

public void mousePressed(MouseEvent me){
}

public void mouseReleased(MouseEvent me){
}

}

repaint();消さないで

public void update(Graphics g){
paint(g);
}

を追加すれば良いのでは?
何だか反応悪いですが・・・
これでいくつでも表示出来ます。
ただし再描画させると消えます。


import java.applet.Applet;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;


public class AppletMixiChallenge58385878 extends Applet implements MouseListener {
    int gx = 0; //X座標を保持する変数
    int gy = 0; //Y座標を保持する変数
    Graphics Grp;
    public void init(){
        Grp = getGraphics();
        addMouseListener(this);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        gx = e.getX();
        gy = e.getY();
        Grp.fillArc(gx-12,gy-12,30,30,0,360);
    }
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO 自動生成されたメソッド・スタブ
    }
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO 自動生成されたメソッド・スタブ
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO 自動生成されたメソッド・スタブ
    }
    @Override
    public void mouseReleased(MouseEvent e) {
        // TODO 自動生成されたメソッド・スタブ
    }
}
>kuboさん
コメントしていただきありがとうございます。

配列を使うとこんなプログラムになるんですね!
自分もfor文使えばうまくいくかな〜って少し思っていたんですが、
プログラムに落とし込むことができませんでした(>_<)

まだまだ練習不足ですので頑張らなければですね。
どうもありがとうございました^^
>(コ´ω`ジ)ノ さん
コメントしていただきありがとうございます。

3行で解決するとは…勉強不足ですね(>_<)
参考書で確認しましたが、
「コンテナを更新する」っていう説明文でした。
解りづらいですねwというよりもっと初心者向けの参考書を探すべきでした。

おかげで解決しました!
ありがとうございます^^
>rubさん
何度もありがとうございます。

このようなプログラムもできるんですね!
プログラミングは奥が深いですね。

反応が悪いことについてですが、
マウスを静止させた状態でクリックしないと描画されませんでした。
マウスを押した時点で●を出現させればうまくいきそうな気がしますが、
ちょっとよくわからないので色々いじくってみます^^

色々とありがとうございました!
反応よくしたかったらとりあえずmouseClickedじゃなくてmousePressedを使うようにするだけでもだいぶ変わるんでないかな?
> トリーヴァさん
コメントしていただきありがとうございます。

なるほど…色々な単語があるんですね!
今日はもう帰宅してしまったので明日学校へ行ったら試してみます!

とても参考になりました。
ありがとうございます^^
> しゅぺるたーさん

mouseClickedとかのことを表現したかったんですが何て言えばいいのかわかんなくて(>_<)

No. 12

傍からからごめんなさい…。

イベントハンドラー(event handler)です。

> kuboさん
ありがとうございます!
イベントハンドラーっていうんですね。

無知でほんとにすいません(>_<)
おかげで一つ知識が増えました。

どうもありがとうございます^^

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

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

Javaの課題丸投げ 更新情報

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

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

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