import java.util.*;
import java.text.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class TimeFrame extends Thread
{
private Date d;
final Date dd=new Date(2012,12,25,0,0,0);
private JFrame f;
private JLabel b1=new JLabel();
private JLabel b2=new JLabel();
TimeFrame()
{
f=new JFrame("倒计时");
f.setLayout(new FlowLayout());
f.setBounds(300,200,300,200);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
b2.setText("距圣诞节还有");
f.add(b1);f.add(b2);
}
public void run()
{
while(true)
{
try
{
d=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年M月d日 HH:mm:ss");
String s=sdf.format(d);
b1.setText("现在时间是"+s);
Thread.sleep(1000);
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}

}
}
public class ChristmasDemo
{
public static void main(String[] args)
{
TimeFrame abc=new TimeFrame();
Thread t=new Thread(abc);
t.start();
}
}
剩下的代码应该怎么写呢?

解决方案 »

  1.   

    要什么样的结果?
    还有几天,or x天y小时z分钟k秒
      

  2.   

    import java.awt.EventQueue;
    import java.awt.Dimension;
    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowAdapter;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.Box;
    import javax.swing.Timer;
    import java.util.Locale;import org.joda.time.DateTime;
    import org.joda.time.Period;
    import org.joda.time.format.DateTimeFormat;
    import org.joda.time.format.DateTimeFormatter;
    import org.joda.time.format.PeriodFormatter;
    import org.joda.time.format.PeriodFormatterBuilder;public class CountDownTimer {
        public static void main(final java.lang.String[] args) {
            EventQueue.invokeLater(new java.lang.Runnable(){
                    @Override public void run(){
                        final JFrame frame = new JFrame("");
                        final JLabel message = new JLabel("");
                        final JLabel countdown = new JLabel("");
                        final Timer timer = new Timer(1000, new ActionListener(){
                                final DateTime XMAS = new DateTime(2012,12,25,0,0,0);
                                final DateTimeFormatter formatter1 = DateTimeFormat.forPattern("yyyy年MM月dd日 HH:mm:ss");
                                final PeriodFormatter formatter = new PeriodFormatterBuilder()
                                    .appendPrefix("距圣诞节还有")
                                    .appendWeeks()
                                    .appendSuffix("周")
                                    .appendDays()
                                    .appendSuffix("天")
                                    .appendHours()
                                    .appendSuffix("小时")
                                    .appendMinutes()
                                    .appendSuffix("分")
                                    .appendSeconds()
                                    .appendSuffix("秒")
                                    .toFormatter();
                                @Override public void actionPerformed(ActionEvent e){
                                    DateTime now = DateTime.now();
                                    message.setText(String.format("现在时间是:%s",formatter1.print(now)));
                                    Period period = new Period(now, XMAS);
                                    countdown.setText(formatter.print(period));
                                }
                            });
                        timer.setRepeats(true);
                        Box vbox = Box.createVerticalBox();
                        vbox.add(message);
                        vbox.add(countdown);
                        frame.add(vbox);
                        frame.setPreferredSize(new Dimension(400,200));
                        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        frame.pack();
                        frame.addWindowListener(new WindowAdapter(){
                                @Override public void windowOpened(WindowEvent e){
                                    timer.start();
                                }
                                @Override public void windowClosing(WindowEvent e){
                                    timer.stop();
                                }
                            });
                        frame.setVisible(true);
                    }
                });
        }
    }
      

  3.   

    五楼说的,我的开发环境里怎么没有org.joda.time包呢?
      

  4.   

    https://github.com/JodaOrg/joda-time/tree/v2.1
      

  5.   

    import java.util.*;
    import java.text.*;
    import java.awt.*;
    import javax.swing.*;import javax.swing.*;
    class TimeFrame 
    {

    //private Date d1=new Date(2012,12,25,0,0,0);
    String d1="2012-12-25 00:00:00";//定义圣诞那天


    private JFrame f;
        private JLabel b1=new JLabel();
        private JLabel b2=new JLabel();
        private JLabel b3=new JLabel();//    private JTextField jtf=new JTextField();
       
        
        public TimeFrame()
        {
         f=new JFrame("倒计时");
         f.setLayout(new FlowLayout(FlowLayout.CENTER,300,10));
            f.setBounds(300,200,300,200);
            f.setVisible(true);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            b2.setText("距圣诞节还有");
            f.add(b1);
            f.add(b2);
            f.add(b3);
        }
        
        public void start()
        {
            while(true)
            {
                try
                {
                
                    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义格式
                    String startTime=sdf.format(new Date());//把当前的时间转化成字符串
                    b1.setText("现在时间是"+startTime);    
                    
                    long startTimeMiss=sdf.parse(startTime).getTime();//取得开始时间的毫秒书
                    long endTimeMiss=sdf.parse(d1).getTime();//取得结束时间的毫秒数
                    long resultTime=endTimeMiss-startTimeMiss;//取得塔门之间的时间
                    
        
                    long day = resultTime / (24 * 60 * 60 * 1000);
                    long hour = (resultTime/ (60 * 60 * 1000) - day * 24);
                    long min = ((resultTime / (60 * 1000)) - day * 24 * 60 - hour * 60);
                    long se = (resultTime / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
                    b3.setText(day+"天" + hour + "小时" + min + "分" + se + "秒 ");
                                
                }
                catch(Exception e)
                {
                    System.out.println(e.getMessage());
                }
            }
             
        }
    }
    public class ChristmasDemo
    {
        public static void main(String[] args)
        {
            TimeFrame abc=new TimeFrame();
            abc.start();
        }}