有一段时间没写博客了,这段时间里并没有瞎忙其他事情每晚自己仍然坚持跑步和写代码。生活就是这样
今天遇到标题的这个问题,然后自己试着写了一下,发现原来看似平常的事物背后都有不为人知的一面。废话不多说了,上代码。
方法一:
package com.december15;
import javax.swing.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimeShower1 {
//定义一个方法用来显示界面
public JLabel show(){
JFrame jf=new JFrame();
JPanel jp1=new JPanel();
JLabel jl1=new JLabel();
jp1.add(jl1);
jf.add(jp1);
jf.setBounds(300, 300, 400, 300);
jf.setVisible(true);
return jl1;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TimeShower1 ts=new TimeShower1();
JLabel jlb=ts.show();
Timer timer = new Timer();
TimerTask tt=new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String s=sdf.format(date);
jlb.setText(s);
}
};
timer.schedule(tt, new Date(), 1000);
}
}
解释一下上述代码,首先定义了一个TimeShower1的方法,该方法用来设置显示界面,同时返回一个JLabel类型的对象,当然这是后话。
至于为什么要返回这样一个对象,这里简单解释一下:我们在页面上显示一个固定的时间是很简单的。要想显示动态时间,就需要我们动态修改jlabel里面的内容。没错,要动态修改。怎么修改呢?是不是需要拿到这样一个对象,然后修改就可以了。这里可以简单理解成返回之后,拿到这个对象的引用然后对其进行修改然后再返回过去。
这一块其实是刚开始想了好久没迈过去的坎。怎么动态修改时间,上述代码里说的很清楚。
方法二(张老师说可能有点问题),这里也拿出来和大家分享一下吧
package com.december15;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimerTask;
import java.util.Timer;
import javax.swing.*;
public class TimerShower3 extends JFrame {
// 定义我需要的控件
JPanel jp1;
JLabel jl1;
// 构造函数初始化控件
public TimerShower3() {
jp1 = new JPanel();
jl1 = new JLabel();
jp1.add(jl1);
this.add(jp1);
this.setBounds(300, 300, 400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
reflash();
}
// 定义一个方法动态更改jl1
public void reflash() {
Timer timer = new Timer();
// 下面开始刷新jl1
TimerTask tt = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss ");
String s = sdf.format(date);
jl1.setText(s);
}
};
timer.schedule(tt, new Date(), 1000);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TimerShower3 t3 = new TimerShower3();
}
}