我准备向一个程序中添加一个动态显示年月日时分秒的控件,用DigitalClock只能显示时分秒,在网上搜到一个代码能动态显示年月日,但是放到Android里显示的却是静态的,不知道什么原因,本人小白,请高手指点!!!
Java代码:
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* This class is a simple JFrame implementation to explain how to
* display time dynamically on the JSwing-based interface.
*/
public class TimeFrame extends JFrame
{
/*
* Variables
*/
private JPanel timePanel;
private JLabel timeLabel;
private JLabel displayArea;
private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd hh:mm:ss";
private String time;
private int ONE_SECOND = 1000;
public TimeFrame()
{
timePanel = new JPanel();
timeLabel = new JLabel("CurrentTime: ");
displayArea = new JLabel();
configTimeArea();
timePanel.add(timeLabel);
timePanel.add(displayArea);
this.add(timePanel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(new Dimension(200,70));
this.setLocationRelativeTo(null);
}
/**
* 这个方法创建 a timer task 每秒更新一次 the time
*/
private void configTimeArea() {
Timer tmr = new Timer();
tmr.scheduleAtFixedRate(new JLabelTimerTask(),new Date(), ONE_SECOND);
}
/**
* Timer task 更新时间显示区
*
*/
protected class JLabelTimerTask extends TimerTask{
SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
@Override
public void run() {
time = dateFormatter.format(Calendar.getInstance().getTime());
displayArea.setText(time);
}
}
public static void main(String arg[])
{
TimeFrame timeFrame=new TimeFrame();
timeFrame.setVisible(true);
}
}
Android代码:
package test.activity;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;public class Test03 extends Activity {
/** Called when the activity is first created. */
private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd hh:mm:ss";
private String time;
private int ONE_SECOND = 1000;
private TextView textview01;
private TextView textview02; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); textview01 = (TextView) findViewById(R.id.textview01);
textview02 = (TextView) findViewById(R.id.textview02);
configTimeArea();
} /**
* 这个方法创建 a timer task 每秒更新一次 the time
*/
private void configTimeArea() {
Timer tmr = new Timer();
tmr.scheduleAtFixedRate(new TextViewTimerTask(), new Date(), ONE_SECOND);
textview02.setText("该方法已执行");
} /**
* Timer task 更新时间显示区
*
*/
protected class TextViewTimerTask extends TimerTask {
SimpleDateFormat dateFormatter = new SimpleDateFormat(
DEFAULT_TIME_FORMAT); @Override
public void run() {
time = dateFormatter.format(Calendar.getInstance().getTime());
textview01.setText(time);
}
}
}
Java代码:
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
* This class is a simple JFrame implementation to explain how to
* display time dynamically on the JSwing-based interface.
*/
public class TimeFrame extends JFrame
{
/*
* Variables
*/
private JPanel timePanel;
private JLabel timeLabel;
private JLabel displayArea;
private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd hh:mm:ss";
private String time;
private int ONE_SECOND = 1000;
public TimeFrame()
{
timePanel = new JPanel();
timeLabel = new JLabel("CurrentTime: ");
displayArea = new JLabel();
configTimeArea();
timePanel.add(timeLabel);
timePanel.add(displayArea);
this.add(timePanel);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(new Dimension(200,70));
this.setLocationRelativeTo(null);
}
/**
* 这个方法创建 a timer task 每秒更新一次 the time
*/
private void configTimeArea() {
Timer tmr = new Timer();
tmr.scheduleAtFixedRate(new JLabelTimerTask(),new Date(), ONE_SECOND);
}
/**
* Timer task 更新时间显示区
*
*/
protected class JLabelTimerTask extends TimerTask{
SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT);
@Override
public void run() {
time = dateFormatter.format(Calendar.getInstance().getTime());
displayArea.setText(time);
}
}
public static void main(String arg[])
{
TimeFrame timeFrame=new TimeFrame();
timeFrame.setVisible(true);
}
}
Android代码:
package test.activity;import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;public class Test03 extends Activity {
/** Called when the activity is first created. */
private String DEFAULT_TIME_FORMAT = "yyyy-MM-dd hh:mm:ss";
private String time;
private int ONE_SECOND = 1000;
private TextView textview01;
private TextView textview02; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); textview01 = (TextView) findViewById(R.id.textview01);
textview02 = (TextView) findViewById(R.id.textview02);
configTimeArea();
} /**
* 这个方法创建 a timer task 每秒更新一次 the time
*/
private void configTimeArea() {
Timer tmr = new Timer();
tmr.scheduleAtFixedRate(new TextViewTimerTask(), new Date(), ONE_SECOND);
textview02.setText("该方法已执行");
} /**
* Timer task 更新时间显示区
*
*/
protected class TextViewTimerTask extends TimerTask {
SimpleDateFormat dateFormatter = new SimpleDateFormat(
DEFAULT_TIME_FORMAT); @Override
public void run() {
time = dateFormatter.format(Calendar.getInstance().getTime());
textview01.setText(time);
}
}
}
android下有个时间更改广播是以分为最小更改单位的。你用handler再加上秒就应该可以了吧
对,TIME_TICK事件去更新时间,用Handler去刷新秒时间