解决方案 »
- jtable里如何设置某列的类型为Boolean,Integer等?
- 静态代码块可用来初始化一些项目最常用的变量或对象. 那为什么不写在构造函数里。。。?
- 客户端服务器小程序地址问题
- line=null是什么意思?
- 求一个字符串中提取email地址的方法!急急急!
- 如何对形如"1234556666"的String类型进行加减操作?
- 菜鸟的问题:内部类继承的问题
- 最简单的问题,JDK1。4。0的配置问题!!!
- 为何我的IE中每次都显示相同的Applet?
- 用Eclipse自带的git时出现了 java.net.SocketException: Connection reset
- 请大家帮我看看:
- 一个简单的界面小程序,求解(新手)
addWindowLisenter(new WindowAdapter()
接口定义
interface TimerListener{
void timeElapsed(Timer t);
}
删掉}?,以及其他的多余的垃圾?
}?
public void run()还有什么问题?你要描述清楚
1.addWindowListener那句,你的Listener拼错了
2.public void run,你写在了Timer的外部
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;public class TimerTest { public static void main(String args[]) {
JFrame f = new TimerTestFrame();
f.setVisible(true);
}
}class TimerTestFrame extends JFrame { public TimerTestFrame() {
setSize(300, 450);
setTitle("Timeer Test");
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container c = getContentPane();
c.setLayout(new GridLayout(2, 3));
c.add(new ClockCanvas("San Jose", "GMT-8"));
c.add(new ClockCanvas("Taipei", "GMT+8"));
c.add(new ClockCanvas("Berlin", "GMT+1"));
c.add(new ClockCanvas("New York", "GMT-5"));
c.add(new ClockCanvas("Cairo", "GMT+2"));
c.add(new ClockCanvas("Bombay", "GMT+5"));
}
}interface TimerListener { void timeElapsed(Timer t); class Timer extends Thread { private TimerListener target;
public int interval; public Timer(int i, TimerListener t) {
target = t;
interval = i;
setDaemon(true);
}
public void run(){
try {
while (!interrupted()) {
sleep(interval);
target.timeElapsed(this);
}
} catch (InterruptedException e) {
}
}
}}class ClockCanvas extends JPanel implements TimerListener { private int seconds = 0;
private String city;
private int offset;
private GregorianCalendar calendar;
private final int LOCAL = 16; public ClockCanvas(String c, String tz) {
city = c;
calendar = new GregorianCalendar(TimeZone.getTimeZone(tz));
Timer t = new Timer(1000, this);
t.start();
setSize(125, 125);
} public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawOval(0, 0, 100, 100);
double hourAngle = 2 * Math.PI * (seconds - 3 * 60 * 60) / (12 * 60 * 60);
double minuteAngle = 2 * Math.PI * (seconds - 15 * 60) / (60 * 60);
double secondAngle = 2 * Math.PI * (seconds - 15) / 60;
g.drawLine(50, 50, 50 + (int) (30 * Math.cos(hourAngle)),
50 + (int) (30 * Math.sin(hourAngle)));
g.drawLine(50, 50, 50 + (int) (40 * Math.cos(minuteAngle)),
50 + (int) (40 * Math.sin(minuteAngle)));
g.drawLine(50, 50, 50 + (int) (45 * Math.cos(secondAngle)),
50 + (int) (45 * Math.sin(secondAngle)));
g.drawString(city, 0, 115);
} public void timeElapsed(Timer t) {
calendar.setTime(new Date());
seconds = calendar.get(Calendar.HOUR) * 60 * 60 + calendar.get(Calendar.MINUTE) * 60 + calendar.get(Calendar.SECOND);
repaint();
}
}