如下,draw方法已經使用red變數了,也為變數累加,也設定了達到255回0。
import java.awt.*;
public class LED {
private int x, y; //LED燈的位置
private int diameter; //LED燈的尺寸
private int red = 0;
private int green = 0;
private int blue = 0; //LED燈的顏色
public LED(int x, int y, int diameter) {
this.x = x;
this.y = y;
this.diameter = diameter;
}
//已經使用red變數了,也為變數累加,也設定了達到255回0。
void draw(Graphics g) {
if (red == 255) {
red = 0;
}
g.setColor(new Color(red, 255, 50));
g.fillOval(x, y, diameter, diameter);
red++;
}
}
import java.awt.*;
public class TicTacToe extends Frame{
private Image offScreenImage = null;
LED led1 = new LED(50, 50, 200);
public static void main(String[] args) {
TicTacToe ttt = new TicTacToe();
ttt.launchFrame();
}
public void launchFrame(){
this.setLocation(400, 10);
this.setSize(900, 800);
this.setResizable(false);
this.setTitle("demo tic tac toe");
this.setBackground(Color.white);
this.setVisible(true);
new Thread(new PaintThread()).start();
}
@Override
public void paint(Graphics g) {
led1.draw(g);
}
@Override
public void update(Graphics g) {
if (offScreenImage == null) {
offScreenImage = this.createImage(800,800);
}
Graphics g_offScreen = offScreenImage.getGraphics();
Color c = g_offScreen.getColor();
g_offScreen.setColor(Color.white);
g_offScreen.fillRect(0, 0, 900,800);
g_offScreen.setColor(c);
paint(g_offScreen);
g.drawImage(offScreenImage, 0, 0, null);
}
private class PaintThread implements Runnable {
@Override
public void run() {
while (true) {
repaint();
try {
Thread.sleep(800);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
uj5u.com熱心網友回復:
1、你這不是Swing,而是AWT2、你這個實際上應該有效的,但是繪制周期太長了,你感覺不到變化而已
你把繪制執行緒中的sleep改到50ms以下,應該就能看到明顯變化了
uj5u.com熱心網友回復:
這個改下 red=red+30轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/267730.html
標籤:Java SE
上一篇:求助(eclipse使用問題)
