最近在學習java線程,照著書上例子寫的鐘表圖形程序,對線程有一定的理解,但是發(fā)覺對圖形編程的把握不夠很多函數(shù)還不能把握~~
以下是鐘表例子的代碼
package hello;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
public class T extends Applet implements Runnable{
Thread tHour = null,tMinute = null,tSecond = null;//表示時針,分針和秒針的線程
int hour_a,hour_b,minute_a,minute_b,second_a,second_b;//表示時針,分針,秒針端點的整型變量
int hour = 0,minute = 0,second = 0;//獲取當前時間的整型變量
//繪制時針,分針和秒針的Graphics對象
Graphics g_second = null,g_minute = null,g_hour =null;
//存放表盤刻度的數(shù)組,供指針走動時使用
double point_x[] = new double[61],point_y[] = new double[61];
//存放表盤刻度的數(shù)組,供繪制表盤使用
double scaled_x[] = new double[61],scaled_y[] = new double[61];
//判定小程序是否重新開始的變量
int start_count = 0;
public void init(){
g_hour = this.getGraphics();
g_hour.setColor(Color.CYAN);
g_second = this.getGraphics();
g_second.setColor(Color.RED);
g_minute = this.getGraphics();
g_minute.setColor(Color.blue);
g_second.translate(200,200);//進行坐標系統(tǒng)變換,將新坐標系原點設在(200,200)處
g_minute.translate(200,200);
g_hour.translate(200,200);
point_x[0] = 0; point_y[0] = -120;//各個時針12點處的位置坐標(按新坐標系的坐標)
scaled_x[0] = 0;scaled_y[0] = -140;//12點處的刻度位置坐標(按新坐標系的坐標)
double jiaodu = 6*Math.PI/180;
//表盤分割成60分,將分割點的坐標存放在數(shù)組中
for(int i = 0; i < 60; i++){
point_x[i+1] = point_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*point_y[i];
point_y[i+1] = point_y[i]*Math.cos(jiaodu) + point_x[i]*Math.sin(jiaodu);
}
point_x[60] = 0; point_y[60] = -120;
for(int i = 0; i < 60; i++){
scaled_x[i+1] = scaled_x[i]*Math.cos(jiaodu)-Math.sin(jiaodu)*scaled_y[i];
scaled_y[i+1] = scaled_y[i]*Math.cos(jiaodu) + Math.sin(jiaodu)*scaled_x[i];
}
scaled_x[60]= 0;
scaled_y[60] = -140;
}
public void start(){
//每當小程序重新開始時,首先消滅線程,然后重新開始創(chuàng)建線程
if(start_count >= 1){
tSecond.interrupt();
tMinute.interrupt();
tHour.interrupt();
}
tSecond = new Thread(this);
tMinute = new Thread(this);
新聞熱點
疑難解答