/*------------------------------------------------------ ex12_3.java アプレット:スレッドを使う2(update()で背景クリアせず) --------------------------------------------------------*/ import java.applet.*; import java.awt.*; import java.util.Random; /* */ public class ex12_3 extends Applet implements Runnable { Thread thd = null; int x, y, red, grn, blu; Color col; Random rnd; public void init() { // 初期化処理 x = 10; y = 10; red = 255; grn = 0; blu = 0; col = new Color(red, grn, blu); rnd = new Random(); thd = new Thread(this); // 新しいスレッドを作る thd.start(); // スレッド開始 } public void update(Graphics g) {// 再描画の時に背景クリアをしない場合はこのメソッドを使う paint(g); } public void paint(Graphics g) { // 描画処理 g.setColor(col); g.fillRoundRect(x, y, 50, 50, 10, 10); } public void run() { // スレッド開始したときに呼び出されるメソッド while (true) { // 無限ループ x = rnd.nextInt(151); y = rnd.nextInt(151); red = rnd.nextInt(256); grn = rnd.nextInt(256); blu = rnd.nextInt(256); col = new Color(red, grn, blu); repaint(); // アプレット強制再描画メソッド(結果としてpaint()が実行される) } } }