Timer 小程序问题??????需要大家帮忙???

aaronran 2007-09-11 08:37:46
我想用Timer每秒动态显示 时间??编写程序后,却不能实现,大家帮忙解决一下?谢谢 代码如下:

import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;
public class MyTimer
{
Timer timer;
MyTimer()
{
  timer = new Timer();
  timer.schedule(new TiTask(),1000);
}

class TiTask extends TimerTask
{
  Calendar ca = Calendar.getInstance();
  public void run()
  {
    System.out.println(ca.get(Calendar.YEAR)+"年"+ca.get(Calendar.MONTH)+"月"+ca.get(Calendar.DAY_OF_MONTH)+" "+ca.get(Calendar.HOUR_OF_DAY)+"时"+ca.get(Calendar.MINUTE)+"分"+ca.get(Calendar.SECOND)+"秒");
System.exit(0);
  }
}

public static void main(String[] args)
{
MyTimer obj = new MyTimer();
}
}
...全文
171 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lulu3779 2007-09-12
  • 打赏
  • 举报
回复
可以在gui里实现
lulu3779 2007-09-12
  • 打赏
  • 举报
回复
达到你要求了
原来加个转移字符就搞定了

import java.io.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;

class MyTimer {
Timer timer;

MyTimer() {
timer = new Timer();
TimerTask tt = new TiTask();
timer.schedule(tt, 1000, 1000);
}

class TiTask extends TimerTask {

public void run() {
Calendar ca = Calendar.getInstance();

System.out.print(ca.get(Calendar.YEAR) + "年"
+ ca.get(Calendar.MONTH) + "月"
+ ca.get(Calendar.DAY_OF_MONTH) + "日"
+ ca.get(Calendar.HOUR_OF_DAY) + "时"
+ ca.get(Calendar.MINUTE) + "分" + ca.get(Calendar.SECOND)
+ "秒"+'\r');

}
}

public static void main(String[] args) {
MyTimer obj = new MyTimer();
while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
try {
int ch = System.in.read();
System.out.println("dayin "+ch);
if (ch - 'c' == 0) {
obj.timer.cancel();// 使用这个方法退出任务
}
if (ch - 'q' == 0) {
System.exit(0);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
zephyr_cc 2007-09-11
  • 打赏
  • 举报
回复
只能在cmd下使用:

import java.io.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;

public class MyTimer {
Timer timer;

MyTimer() {
timer = new Timer();
TimerTask tt = new TiTask();
timer.schedule(tt, 1000, 1000);
}

class TiTask extends TimerTask {

public void run() {
Calendar ca = Calendar.getInstance();
System.out.print("\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b");
System.out.printf(("%4d" + "年"
+ "%2d" + "月"
+ "%2d" + " "
+ "%2d" + "时"
+ "%2d" + "分" + "%2d"
+ "秒"), ca.get(Calendar.YEAR), ca.get(Calendar.MONTH),
ca.get(Calendar.DAY_OF_MONTH), ca.get(Calendar.HOUR_OF_DAY),
ca.get(Calendar.MINUTE), ca.get(Calendar.SECOND));


}
}

public static void main(String[] args) {
MyTimer obj = new MyTimer();
while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
try {
int ch = System.in.read();
if (ch - 'c' == 0) {
obj.timer.cancel();// 使用这个方法退出任务
}
if (ch - 'q' == 0) {
System.exit(0);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
aaronran 2007-09-11
  • 打赏
  • 举报
回复
感谢 lulu3779()和 zephyr_cc(),但是输出的结果是 时间一直一行一行的输入
如果 我想让 时间只在原地动态显示 就象 桌面状态栏旁的时间一样 谢谢继续帮小弟解决最后这个问题
lulu3779 2007-09-11
  • 打赏
  • 举报
回复
import java.io.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;

class MyTimer {
Timer timer;

MyTimer() {
timer = new Timer();
TimerTask tt = new TiTask();
timer.schedule(tt, 1000, 1000);
}

class TiTask extends TimerTask {

public void run() {


Calendar ca = Calendar.getInstance();//将这个从上一行移动到这里 ,至于为什么你可以好好想想。考虑下程序是怎么编译执行的



System.out.println(ca.get(Calendar.YEAR) + "年"
+ ca.get(Calendar.MONTH) + "月"
+ ca.get(Calendar.DAY_OF_MONTH) + "日"
+ ca.get(Calendar.HOUR_OF_DAY) + "时"
+ ca.get(Calendar.MINUTE) + "分" + ca.get(Calendar.SECOND)
+ "秒");

}
}

public static void main(String[] args) {
MyTimer obj = new MyTimer();
while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
try {
int ch = System.in.read();
System.out.println("dayin "+ch);
if (ch - 'c' == 0) {
obj.timer.cancel();// 使用这个方法退出任务
}
if (ch - 'q' == 0) {
System.exit(0);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
zephyr_cc 2007-09-11
  • 打赏
  • 举报
回复
用这个方法:
public void schedule(TimerTask task,
Date firstTime,
long period)

改了改:
import java.io.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Calendar;

public class MyTimer {
Timer timer;

MyTimer() {
timer = new Timer();
TimerTask tt = new TiTask();
timer.schedule(tt, 1000, 2000);
}

class TiTask extends TimerTask {
Calendar ca = Calendar.getInstance();

public void run() {
System.out.println(ca.get(Calendar.YEAR) + "年"
+ ca.get(Calendar.MONTH) + "月"
+ ca.get(Calendar.DAY_OF_MONTH) + " "
+ ca.get(Calendar.HOUR_OF_DAY) + "时"
+ ca.get(Calendar.MINUTE) + "分" + ca.get(Calendar.SECOND)
+ "秒");

}
}

public static void main(String[] args) {
MyTimer obj = new MyTimer();
while (true) {// 这个是用来停止此任务的,否则就一直循环执行此任务了
try {
int ch = System.in.read();
if (ch - 'c' == 0) {
obj.timer.cancel();// 使用这个方法退出任务
}
if (ch - 'q' == 0) {
System.exit(0);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧