求一向Frame中添加计时器的完整代码 是一秒一显示的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://wenku.baidu.com/view/fc8d2901de80d4d8d15a4fe5.html import java.util.*;class Cs1{ public static void main(String[] args) { Calendar cal=new Calendar.getInstance(); cal.setTime(new Date()); long t1=cal.getTimeInMillis(); System.out.println(t1); }}编译不成功,求解 Calendar cal=new Calendar.getInstance(); 改为 Calendar cal=Calendar.getInstance(); 上面的程序已解决只想得到一个完整的带有计时器的frame,只有一个计时器和两个按钮“开始”、“结束”,并且是按秒显示的 public class TestCanvas extends Frame{ public TestCanvas(){ //得到窗口尺寸 this.add(new StopWatch()); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { e.getWindow().dispose(); } }); } public static void main(String[] args) { TestCanvas canvas = new TestCanvas(); canvas.setSize(300,300); canvas.setVisible(true); }}public class StopWatch extends Canvas implements Runnable{ long startTime=0 ; long endTime=0; boolean bStart = false; public StopWatch(){ this.enableEvents(AWTEvent.MOUSE_EVENT_MASK); } @Override protected void processMouseEvent(MouseEvent e) { if(e.getID() == MouseEvent.MOUSE_PRESSED){ startTime = endTime = System.currentTimeMillis(); repaint(); bStart = true; new Thread(this).start(); }else if(e.getID() == MouseEvent.MOUSE_RELEASED){ endTime = System.currentTimeMillis(); repaint(); bStart = false; } } @Override public void paint(Graphics g) { SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); try { Date date0 = format.parse("00:00:00"); date0.setTime(date0.getTime()+(endTime - startTime)); String strTime = format.format(date0); //g.setColor(Color.BLACK); g.setColor(Color.BLACK); g.draw3DRect(0,0,78,28,false); g.setColor(Color.RED); g.drawString(strTime,10,20); } catch (Exception e) { e.printStackTrace(); } } @Override public void run() { while(bStart){ try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } endTime = System.currentTimeMillis(); repaint(); } }} http://topic.csdn.net/u/20120528/00/6f95d429-0851-46ac-839e-2040dc058186.html?46716帮帮忙看一下…… import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.*;public class ClockCounter extends JFrame{ private JButton startButton = new JButton("start"); private JButton endButton = new JButton("end"); private JLabel timeLabel = new JLabel(""); private int count; private Timer timer; public ClockCounter() { count = 0; JPanel panel_1 = new JPanel(); panel_1.add(startButton); panel_1.add(endButton); JPanel panel_2 = new JPanel(); panel_2.add(timeLabel); startButton.addActionListener(new StartButtonListener()); endButton.addActionListener(new EndButtonListener()); this.add(panel_1, BorderLayout.CENTER); this.add(panel_2, BorderLayout.SOUTH); timer = new Timer(100, new TimerCounterTask()); } private synchronized void clearCount() { count = 0; } private synchronized int getCount() { return count; } private synchronized void increaseCount() { count++; } public static void main(String [] args) { ClockCounter counter = new ClockCounter(); counter.setSize(400, 100); counter.setVisible(true); } class StartButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { timer.stop(); clearCount(); timer.start(); timeLabel.setText("" + 0 + "." + 0 + " sec"); } } class EndButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { timer.stop(); } } class TimerCounterTask implements ActionListener { @Override public void actionPerformed(ActionEvent e) { increaseCount(); timeLabel.setText("" + getCount() / 10 + "." + getCount() % 10 + " sec"); } }}楼主看看这样可以么 我只是想学习一下timer的用法,不需要太长的代码,只要一个简单的计时器即可 下面这个程序运行时不能达到预期目的,求修正import java.awt.*;import java.awt.event.*;import java.util.*;import java.util.Timer;import java.util.TimerTask;class Cs1{ public static void main(String[] args) { WindowButton win=new WindowButton("窗口"); }}class WindowButton extends Frame implements ActionListener{ Button button1,button2,button3; TextField text; Timer timer=new Timer(); Calendar cal=Calendar.getInstance(); WindowButton(String s) { super(s); setLayout(new FlowLayout()); button1=new Button("所用时间"); button2=new Button("开始计时"); button3=new Button("停止计时"); text=new TextField("0",10); add(text); add(button2); add(button1); add(button3); button2.addActionListener(this); button3.addActionListener(this); setBounds(100,100,150,150); setVisible(true); validate(); } public void actionPerformed(ActionEvent e) { cal.setTime(new Date()); if(e.getSource()==button2) { final long t1=cal.getTimeInMillis(); timer.schedule(new TimerTask() { public void run() { long t2=cal.getTimeInMillis(); long m=(t2-t1)/1000; //System.out.println(m+"s"); text.setText(m+"s"); } },0,1000); } if(e.getSource()==button3) { timer.cancel(); } }} 字符串模糊匹配的实现 背包找组合问题中的一个小问题(算法已给出) hashCode(),equals()和compareTo()这三个方法的执行顺序 awt用户登陆界面,大家帮帮忙 JFrame设计无法显示 如何在Frame 上使用 Insets 类 运行javaapplet需要下载java2runtime吗 怎样将jpg图转换为png图 在APPLET中快捷菜单怎么做? 如何格式化数值类型,比如:float f=12345.789 格式化成:12,345.79 三个选项卡面板来回切换是怎么实现的? 求写一个Java控制台程序,用来录制“UI程序的事件”和“回放事件来执行UI程序”
class Cs1
{
public static void main(String[] args)
{
Calendar cal=new Calendar.getInstance();
cal.setTime(new Date());
long t1=cal.getTimeInMillis();
System.out.println(t1);
}
}
编译不成功,求解
改为 Calendar cal=Calendar.getInstance();
只想得到一个完整的带有计时器的frame,只有一个计时器和两个按钮“开始”、“结束”,并且是按秒显示的
public TestCanvas(){
//得到窗口尺寸
this.add(new StopWatch());
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
e.getWindow().dispose();
}
});
}
public static void main(String[] args) {
TestCanvas canvas = new TestCanvas();
canvas.setSize(300,300);
canvas.setVisible(true);
}
}
public class StopWatch extends Canvas implements Runnable{ long startTime=0 ;
long endTime=0;
boolean bStart = false;
public StopWatch(){
this.enableEvents(AWTEvent.MOUSE_EVENT_MASK);
}
@Override
protected void processMouseEvent(MouseEvent e) {
if(e.getID() == MouseEvent.MOUSE_PRESSED){
startTime = endTime = System.currentTimeMillis();
repaint();
bStart = true;
new Thread(this).start();
}else if(e.getID() == MouseEvent.MOUSE_RELEASED){
endTime = System.currentTimeMillis();
repaint();
bStart = false;
}
} @Override
public void paint(Graphics g) {
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
try {
Date date0 = format.parse("00:00:00");
date0.setTime(date0.getTime()+(endTime - startTime));
String strTime = format.format(date0);
//g.setColor(Color.BLACK);
g.setColor(Color.BLACK);
g.draw3DRect(0,0,78,28,false);
g.setColor(Color.RED);
g.drawString(strTime,10,20);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
while(bStart){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
endTime = System.currentTimeMillis();
repaint();
}
}
}
帮帮忙看一下……
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;public class ClockCounter extends JFrame{
private JButton startButton = new JButton("start");
private JButton endButton = new JButton("end");
private JLabel timeLabel = new JLabel("");
private int count;
private Timer timer;
public ClockCounter() {
count = 0;
JPanel panel_1 = new JPanel();
panel_1.add(startButton);
panel_1.add(endButton);
JPanel panel_2 = new JPanel();
panel_2.add(timeLabel);
startButton.addActionListener(new StartButtonListener());
endButton.addActionListener(new EndButtonListener());
this.add(panel_1, BorderLayout.CENTER);
this.add(panel_2, BorderLayout.SOUTH);
timer = new Timer(100, new TimerCounterTask());
}
private synchronized void clearCount() {
count = 0;
}
private synchronized int getCount() {
return count;
}
private synchronized void increaseCount() {
count++;
}
public static void main(String [] args) {
ClockCounter counter = new ClockCounter();
counter.setSize(400, 100);
counter.setVisible(true);
}
class StartButtonListener implements ActionListener { @Override
public void actionPerformed(ActionEvent e) {
timer.stop();
clearCount();
timer.start();
timeLabel.setText("" + 0 + "." + 0 + " sec");
}
}
class EndButtonListener implements ActionListener { @Override
public void actionPerformed(ActionEvent e) {
timer.stop();
}
}
class TimerCounterTask implements ActionListener { @Override
public void actionPerformed(ActionEvent e) {
increaseCount();
timeLabel.setText("" + getCount() / 10 + "." + getCount() % 10 + " sec");
}
}
}
楼主看看这样可以么
下面这个程序运行时不能达到预期目的,求修正
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.Timer;
import java.util.TimerTask;
class Cs1
{
public static void main(String[] args)
{ WindowButton win=new WindowButton("窗口");
}
}
class WindowButton extends Frame implements ActionListener
{
Button button1,button2,button3;
TextField text;
Timer timer=new Timer();
Calendar cal=Calendar.getInstance();
WindowButton(String s)
{ super(s);
setLayout(new FlowLayout());
button1=new Button("所用时间");
button2=new Button("开始计时");
button3=new Button("停止计时");
text=new TextField("0",10);
add(text);
add(button2);
add(button1);
add(button3);
button2.addActionListener(this);
button3.addActionListener(this);
setBounds(100,100,150,150);
setVisible(true);
validate();
}
public void actionPerformed(ActionEvent e)
{ cal.setTime(new Date());
if(e.getSource()==button2)
{ final long t1=cal.getTimeInMillis();
timer.schedule(new TimerTask()
{ public void run()
{ long t2=cal.getTimeInMillis();
long m=(t2-t1)/1000;
//System.out.println(m+"s");
text.setText(m+"s");
}
},0,1000);
}
if(e.getSource()==button3)
{ timer.cancel();
}
}
}