初学JAVA想写一个时钟。。不会。。 在j2sdk\demo\applets\Clock\或j2sdk\demo\plugin\applets\Clock\下有源代码,可以参考的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //MyClock.javaimport java.awt.Graphics;import java.awt.Color;import java.applet.Applet;import java.text.*;import java.util.*;import java.applet.AudioClip;public class MyClock extends Applet implements Runnable { SimpleDateFormat formatter; //用来显示时间的样式 Date currentDate; // 现在时间 Thread clockThread = null; boolean keepRunning = true; Clock myClock; AudioClip di; public void init() { int x,y; formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault()); currentDate = new Date(); di=getAudioClip(getCodeBase(),"audio/di.au"); } public void start() { if(clockThread == null) { clockThread = new Thread(this); clockThread.start(); } } public void run() { while(keepRunning) { repaint(); di.play(); try { Thread.sleep(1000); } catch(InterruptedException e) {} } } //用此方法取代stop(),来要求线程停止执行 public void pleaseStop() { keepRunning = false; } public void stop(){ if(clockThread!=null){ pleaseStop(); } } public void paint(Graphics g) { int s, m, h; String today; setBackground(Color.white); currentDate = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault()); try { s = Integer.parseInt(formatter.format(currentDate)); } catch (NumberFormatException n) { s = 0; } formatter.applyPattern("m"); try { m = Integer.parseInt(formatter.format(currentDate)); } catch (NumberFormatException n) { m = 0; } formatter.applyPattern("h"); try { h = Integer.parseInt(formatter.format(currentDate)); } catch (NumberFormatException n) { h = 0; } formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy"); today = formatter.format(currentDate); myClock = new Clock(h, m, s); myClock.show(g, 70, 70, 70); } public void update(Graphics g) { myClock.clear(g, 70, 70, 70, getBackground()); g.setColor(getForeground()); paint(g); }}class Clock { Clock(int hrs, int min, int sec) { hour = hrs % 12; minute = min; second = sec; } void show(Graphics g, int center_x, int center_y, int radius) { int hrs_nid_len = (int)(radius * 0.5), // 定义时针的长度 min_nid_len = (int)(radius * 0.7), // 定义分针的长度 sec_nid_len = (int)(radius * 0.85); // 定义秒针的长度 double theta; // 画出钟面 g.setColor(Color.green); g.drawOval(center_x - radius, center_y - radius, radius * 2, radius * 2); g.setColor(Color.blue); g.drawString("1",105,20); g.drawString("2",125,45); g.drawString("3",center_x*2-5,center_y); g.drawString("4",125,105); g.drawString("5",105,125); g.drawString("6",center_x,center_y*2); g.drawString("7",35,130); g.drawString("8",10,105); g.drawString("9",0,center_y); g.drawString("10",10,45); g.drawString("11",35,20); g.drawString("12",center_x-5,10); // 画出时针 theta = (double)(hour * 60 * 60 + minute * 60 + second) / 43200.0 * 2.0 * Math.PI; drawNiddle(g, Color.blue, center_x, center_y, hrs_nid_len, theta); // 画出分针 theta = (double)(minute * 60 + second) / 3600.0 * 2.0 * Math.PI; drawNiddle(g, Color.blue, center_x, center_y, min_nid_len, theta); // 画出秒针 theta = (double)second / 60.0 * 2.0 * Math.PI; drawNiddle(g, Color.red, center_x, center_y, sec_nid_len, theta); } void clear(Graphics g, int center_x, int center_y, int radius, Color clearColor) { int hrs_nid_len = (int)(radius * 0.5), // 定义时针的长度 min_nid_len = (int)(radius * 0.7), // 定义分针的长度 sec_nid_len = (int)(radius * 0.85); // 定义秒针的长度 double theta; // 清除时针 theta = (double)(hour * 60 * 60 + minute * 60 + second) / 43200.0 * 2.0 * Math.PI; drawNiddle(g, clearColor, center_x, center_y, hrs_nid_len, theta); // 清除分针 theta = (double)(minute * 60 + second) / 3600.0 * 2.0 * Math.PI; drawNiddle(g, clearColor, center_x, center_y, min_nid_len, theta); // 清除秒针 theta = (double)second / 60.0 * 2.0 * Math.PI; drawNiddle(g, clearColor, center_x, center_y, sec_nid_len, theta); } private void drawNiddle(Graphics g, Color c, int x, int y, int len, double theta) { g.setColor(c); g.drawLine(x, y, (int)(x + len * Math.sin(theta)), (int)(y - len * Math.cos(theta))); } int hour, minute, second;} java se小程序 java 播放警告声音 为什么 String str = new String("ABC"); 会创建2个对象? sql难题,高手指教一下. 谢谢了 关于浮点型数值的不精确问题求助(100分求) 字符串分割 菜鸟问题:怎样把字符数组转化成内容相同的字符串? jbuilder做的jar文件一定要在有jdk的机器上运行吗? window always on top? ★☆★☆★☆★☆★☆★☆★☆★☆★☆JAVA版年度调查2★☆★☆★☆★☆★☆★☆★☆★☆★☆ java 中出现的小问题.(在线急!!) JTree的事件委任的简单问题
import java.awt.Color;
import java.applet.Applet;
import java.text.*;
import java.util.*;
import java.applet.AudioClip;public class MyClock extends Applet implements Runnable {
SimpleDateFormat formatter; //用来显示时间的样式
Date currentDate; // 现在时间
Thread clockThread = null;
boolean keepRunning = true;
Clock myClock;
AudioClip di; public void init() {
int x,y;
formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());
currentDate = new Date();
di=getAudioClip(getCodeBase(),"audio/di.au");
}
public void start() {
if(clockThread == null) {
clockThread = new Thread(this);
clockThread.start();
}
}
public void run() {
while(keepRunning) {
repaint();
di.play();
try { Thread.sleep(1000); }
catch(InterruptedException e) {}
}
}
//用此方法取代stop(),来要求线程停止执行
public void pleaseStop() { keepRunning = false; }
public void stop(){
if(clockThread!=null){
pleaseStop();
}
}
public void paint(Graphics g) {
int s, m, h;
String today;
setBackground(Color.white); currentDate = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault());
try {
s = Integer.parseInt(formatter.format(currentDate));
} catch (NumberFormatException n) {
s = 0;
}
formatter.applyPattern("m");
try {
m = Integer.parseInt(formatter.format(currentDate));
} catch (NumberFormatException n) {
m = 0;
}
formatter.applyPattern("h");
try {
h = Integer.parseInt(formatter.format(currentDate));
} catch (NumberFormatException n) {
h = 0;
}
formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");
today = formatter.format(currentDate); myClock = new Clock(h, m, s);
myClock.show(g, 70, 70, 70);
} public void update(Graphics g) {
myClock.clear(g, 70, 70, 70, getBackground());
g.setColor(getForeground());
paint(g);
}}
class Clock {
Clock(int hrs, int min, int sec) {
hour = hrs % 12;
minute = min;
second = sec;
} void show(Graphics g, int center_x, int center_y, int radius) {
int hrs_nid_len = (int)(radius * 0.5), // 定义时针的长度
min_nid_len = (int)(radius * 0.7), // 定义分针的长度
sec_nid_len = (int)(radius * 0.85); // 定义秒针的长度
double theta; // 画出钟面
g.setColor(Color.green);
g.drawOval(center_x - radius, center_y - radius,
radius * 2, radius * 2);
g.setColor(Color.blue);
g.drawString("1",105,20);
g.drawString("2",125,45);
g.drawString("3",center_x*2-5,center_y);
g.drawString("4",125,105);
g.drawString("5",105,125);
g.drawString("6",center_x,center_y*2);
g.drawString("7",35,130);
g.drawString("8",10,105);
g.drawString("9",0,center_y);
g.drawString("10",10,45);
g.drawString("11",35,20);
g.drawString("12",center_x-5,10);
// 画出时针
theta = (double)(hour * 60 * 60 + minute * 60 + second) /
43200.0 * 2.0 * Math.PI;
drawNiddle(g, Color.blue, center_x, center_y, hrs_nid_len, theta); // 画出分针
theta = (double)(minute * 60 + second) /
3600.0 * 2.0 * Math.PI;
drawNiddle(g, Color.blue, center_x, center_y, min_nid_len, theta); // 画出秒针
theta = (double)second / 60.0 * 2.0 * Math.PI;
drawNiddle(g, Color.red, center_x, center_y, sec_nid_len, theta);
} void clear(Graphics g, int center_x, int center_y, int radius, Color clearColor) {
int hrs_nid_len = (int)(radius * 0.5), // 定义时针的长度
min_nid_len = (int)(radius * 0.7), // 定义分针的长度
sec_nid_len = (int)(radius * 0.85); // 定义秒针的长度
double theta; // 清除时针
theta = (double)(hour * 60 * 60 + minute * 60 + second) /
43200.0 * 2.0 * Math.PI;
drawNiddle(g, clearColor, center_x, center_y, hrs_nid_len, theta); // 清除分针
theta = (double)(minute * 60 + second) /
3600.0 * 2.0 * Math.PI;
drawNiddle(g, clearColor, center_x, center_y, min_nid_len, theta); // 清除秒针
theta = (double)second / 60.0 * 2.0 * Math.PI;
drawNiddle(g, clearColor, center_x, center_y, sec_nid_len, theta); }
private void drawNiddle(Graphics g, Color c, int x, int y,
int len, double theta) {
g.setColor(c);
g.drawLine(x, y, (int)(x + len * Math.sin(theta)),
(int)(y - len * Math.cos(theta)));
} int hour, minute, second;
}