2
import java.applet.*;
import java.awt.*;      // Graphics, Shape
import java.awt.geom.*; //Graphics2D
/*
<applet code = Oval1.class height=300 width=300 >
</applet>
*/
public class Oval1 extends Applet implements Runnable {
    Shape circle;
    Color c;
    public void init() {
        circle = new Ellipse2D.Float(90,100, 90, 90);
        repaint();
        Thread th = new Thread(this);
        th.start();
    }
    public void run() {
        try {
            while(true) {
                System.out.println(1);
                c = Color.cyan;
                repaint();
                Thread.sleep(1000);
                System.out.println(2);
                c = Color.gray;
                repaint();
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    public void update(Graphics g) {
        paint(g);
    }
    public void paint(Graphics g) {
        Graphics2D d = (Graphics2D) g;
        d.setColor(c);
        d.fill(circle);
    }
}

アプレットの真ん中に塗りつぶされた円があり、1秒ごとに円の色を変えるアプレットを作成しようとしています。つまり、円が点滅しているように見せたいということです。

毎秒円の色を変えたい。

これには Shape クラスと Thread を使用しますが、まだ機能していません。

私はすでに paint(g)update メソッドをオーバーライドして使用しようとしています..

これも影響しません

4

3 に答える 3

3

2 回目の repaint() の後に Thread.sleep(1000) を追加します。

        while(true) {

            System.out.println(1);
            c = Color.cyan;
            repaint();
            Thread.sleep(1000);
            System.out.println(2);
            c = Color.gray;
            repaint();
            Thread.sleep(1000);
        }
于 2012-12-28T07:29:04.297 に答える
2

Thread.sleep()の代わりにJavaタイマーを使用できます。たとえば、Timerの使用、http://docs.oracle.com/javase/7/docs/api/javax/swing/Timer.html。アプレットのThread.sleep()ブロックペイントメソッド。

于 2012-12-28T07:21:37.890 に答える
1

これを試してみてください..

Thread.sleep(1000);を置くだけです。2 番目の repaint() の後、現在 2 番目の repaint の直後に最初の repaint を呼び出すので、2 番目のrepaint() でオーバー ペイントします。

import java.applet.*;
import java.awt.*;      // Graphics, Shape
import java.awt.geom.*; //Graphics2D
/*
<applet code = Oval1.class height=300 width=300 >
</applet>
*/
public class Oval1 extends Applet implements Runnable {
    Shape circle;
    Color c;
    public void init() {
        circle = new Ellipse2D.Float(90,100, 90, 90);
        repaint();
        Thread th = new Thread(this);
        th.start();
    }
    public void run() {
        try {
            while(true) {
                System.out.println(1);
                c = Color.cyan;
                repaint();
                Thread.sleep(1000);
                System.out.println(2);
                c = Color.gray;
                repaint();
                Thread.sleep(1000); 
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
    public void update(Graphics g) {
        paint(g);
    }
    public void paint(Graphics g) {
        Graphics2D d = (Graphics2D) g;
        d.setColor(c);
        d.fill(circle);
    }
}
于 2014-07-08T12:15:14.107 に答える