JLabel里显示时间 如何在JLabel1里显示时间,并且1秒变一次时间?如何在JLabel2里显示日期? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以开一个时间线程 每隔一秒钟调用一次获取系统时间 在线程中用Lable 的setText方法设置lable的文字 试试这个import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.Timer;public class Test extends JFrame{ private static final long serialVersionUID = -1570645570118871214L; public Test() { initUI(); } private void initUI() { this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); final JLabel label = new JLabel(); getContentPane().add(label); Timer timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { label.setText(Calendar.getInstance().getTime().toString()); } }); timer.setRepeats(true); timer.start(); } public static void main(String[] args) { Test t = new Test(); t.setSize(500, 300); t.setVisible(true); }} package chuangsi_0510.thread.timer;import java.util.Date;import java.util.Timer;import java.util.TimerTask;import javax.swing.JFrame;import javax.swing.JLabel;public class TestSwingLabelTime { public static void main(String[] args) { JFrame frame = new JFrame("时钟演示"); JLabel jlabel = new JLabel(); frame.add(jlabel); frame.setSize(300, 200); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); LabelTask labelTask = new LabelTask(jlabel); Timer timer = new Timer(); timer.schedule(labelTask, 20, 1000); }}class LabelTask extends TimerTask{ private JLabel jlabel; public LabelTask(JLabel jlabel){ this.jlabel = jlabel; } @Override public void run() { Date date = new Date(); jlabel.setText(date.toString()); } } 请教下4楼的代码private static final long serialVersionUID = -1570645570118871214L;这句到底是做什么用的啊,以前也用过,不过好像不加这个不行,但是又不知道为什么要加这行,具体做什么用的呢? 用线程写的,比较简陋,呵呵import java.applet.*;import javax.swing.*;import java.util.*;import java.text.*;public class ShowTime extends JFrame implements Runnable{ JLabel jl = new JLabel(); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); ShowTime(){ setSize(150,100); //setLayout(null); setTitle("TIME"); //jl.setBounds(25,50,20,50); add(jl); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void run(){ String str; while(true){ try{ str = sdf.format(new Date()); jl.setText(str); Thread.currentThread().sleep(1000); }catch(InterruptedException ie){ ie.printStackTrace(); } } } public static void main(String[]args){ ShowTime st = new ShowTime(); Thread th = new Thread(st); th.start(); }} 这样试试吧。写的不太好。看看那位兄弟能给改改。import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Calendar;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.Timer;public class Test extends JFrame{ private static final long serialVersionUID = -1570645570118871214L; public Test() { initUI(); } private void initUI() { this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); final JLabel labelDay = new JLabel(); final JLabel labelTime = new JLabel(); getContentPane().setLayout(new BorderLayout()); getContentPane().add(labelDay, BorderLayout.NORTH); getContentPane().add(labelTime, BorderLayout.CENTER); Timer timer = new Timer(1000, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Calendar calendar = Calendar.getInstance(); String year =String.valueOf(calendar.get(Calendar.YEAR)); String month =String.valueOf(calendar.get(Calendar.MONTH) + 1); String day =String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)); String hour =String.valueOf(calendar.get(Calendar.HOUR)); String minute =String.valueOf(calendar.get(Calendar.MINUTE)); String second =String.valueOf(calendar.get(Calendar.SECOND)); String date = new StringBuilder().append(year).append("/") .append(month).append("/").append(day).toString(); String time = new StringBuilder().append(hour).append(":") .append(minute).append(":").append(second).toString(); labelDay.setText(date); labelTime.setText(time); } }); timer.setRepeats(true); timer.start(); } public static void main(String[] args) { Test t = new Test(); t.setSize(500, 300); t.setVisible(true); }} 这是我以前的一个程序中用到的,完成楼主说的功能。/* * TimeShow.java * * Created on 2007年11月21日, 下午12:53 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package emailgiant.Tools;import javax.swing.*;import java.util.*;import java.util.regex.*;/**生成一个线程显示时间。 * * @author KILLer */public class TimeShow extends Thread{ private JLabel time,date; private boolean tag;//控制线程的开始,停止 private Date nowTime; private static String now,dateNow; /**构造函数 * @param t 显示时间的标签。 * @param d 显示日期的标签。 */ public TimeShow(JLabel t,JLabel d) { time=t; date=d; tag=true; } /**停止线程。 */ public void Stop(){ tag=false; } /**线程执行部分。 */ public void run(){ while(tag){ nowTime=new Date(); now=nowTime.toString(); dateNow=DateHandler.dateHandler(nowTime); now=slip(now); time.setText(now); if(!this.date.getText().equals(date)) this.date.setText(dateNow); try{ sleep(1000); } catch(Exception e){ e.printStackTrace(); } } } /**得到当前时间。 */ public static String GetTime(){ return dateNow+" "+now; } /**将日期转化格式为XXXX-XX-XX。 * @param date 将被转化的日期。 */ public static String ConvertTime(Date date){ String time=slip(date.toString()); String datet=DateHandler.dateHandler(date); return datet+" "+time; } /**以空格为标记分隔字符串。 */ private static String slip(String s){ Pattern p=Pattern.compile("[\\s]+"); String[] date=p.split(s); return date[3]; }}/* * DateHandler.java * * Created on 2007年11月21日, 下午8:58 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package emailgiant.Tools;import java.util.*;import java.util.regex.*;/**生成格式为XXXX-XX-XX日期 * * @author KILLer */public class DateHandler { /**构造函数 * @param date 将被转化的日期。 * @return 指定格式的日期。 */ public static String dateHandler(Date date){ String tmp=date.toString(); Pattern p=Pattern.compile("[\\s]+"); String[] value=p.split(tmp); String dateNow=value[5]+"-"+value[1]+"-"+value[2]; return dateNow; }}把显示时间,日期的标签传入TimeShow的构造函数,然后TimeShow.start()就可以了 有谁去过中软国际培训的吗?效果怎么样 讨论:网站防sql注入,是否有必要过滤关键字? 问个JDK环境配置问题 java的数组是什么 关于weblogic连接数据库的问题!!!!!!!!!!! 键盘事件问题,急急急,在线等!!!!! 如何判断xml里是否有某个结点? 一个关于replaceAll的简单问题 请问一个关于JTable的简单问题 Appication在Dos命令行运行的问题???? 问几个h i b e r n a t e的问题!不知道有没有人愿意回答! javaFX 基础问题
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;public class Test extends JFrame{ private static final long serialVersionUID = -1570645570118871214L; public Test()
{
initUI();
} private void initUI()
{
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
final JLabel label = new JLabel();
getContentPane().add(label);
Timer timer = new Timer(1000, new ActionListener()
{ @Override
public void actionPerformed(ActionEvent e)
{
label.setText(Calendar.getInstance().getTime().toString());
}
});
timer.setRepeats(true);
timer.start();
} public static void main(String[] args)
{
Test t = new Test();
t.setSize(500, 300);
t.setVisible(true);
}
}
package chuangsi_0510.thread.timer;import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;import javax.swing.JFrame;
import javax.swing.JLabel;public class TestSwingLabelTime {
public static void main(String[] args) {
JFrame frame = new JFrame("时钟演示");
JLabel jlabel = new JLabel();
frame.add(jlabel);
frame.setSize(300, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
LabelTask labelTask = new LabelTask(jlabel);
Timer timer = new Timer();
timer.schedule(labelTask, 20, 1000);
}
}
class LabelTask extends TimerTask{
private JLabel jlabel;
public LabelTask(JLabel jlabel){
this.jlabel = jlabel;
}
@Override
public void run() {
Date date = new Date();
jlabel.setText(date.toString());
}
}
import javax.swing.*;
import java.util.*;
import java.text.*;public class ShowTime extends JFrame implements Runnable{
JLabel jl = new JLabel();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss");
ShowTime(){
setSize(150,100);
//setLayout(null);
setTitle("TIME");
//jl.setBounds(25,50,20,50);
add(jl);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void run(){
String str;
while(true){
try{
str = sdf.format(new Date());
jl.setText(str);
Thread.currentThread().sleep(1000);
}catch(InterruptedException ie){
ie.printStackTrace();
}
}
}
public static void main(String[]args){
ShowTime st = new ShowTime();
Thread th = new Thread(st);
th.start();
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.Timer;public class Test extends JFrame{ private static final long serialVersionUID = -1570645570118871214L; public Test()
{
initUI();
} private void initUI()
{
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
final JLabel labelDay = new JLabel();
final JLabel labelTime = new JLabel();
getContentPane().setLayout(new BorderLayout());
getContentPane().add(labelDay, BorderLayout.NORTH);
getContentPane().add(labelTime, BorderLayout.CENTER);
Timer timer = new Timer(1000, new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
Calendar calendar = Calendar.getInstance();
String year =String.valueOf(calendar.get(Calendar.YEAR));
String month =String.valueOf(calendar.get(Calendar.MONTH) + 1);
String day =String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
String hour =String.valueOf(calendar.get(Calendar.HOUR));
String minute =String.valueOf(calendar.get(Calendar.MINUTE));
String second =String.valueOf(calendar.get(Calendar.SECOND)); String date = new StringBuilder().append(year).append("/")
.append(month).append("/").append(day).toString();
String time = new StringBuilder().append(hour).append(":")
.append(minute).append(":").append(second).toString(); labelDay.setText(date);
labelTime.setText(time); }
});
timer.setRepeats(true);
timer.start();
} public static void main(String[] args)
{
Test t = new Test();
t.setSize(500, 300);
t.setVisible(true);
}
}
* TimeShow.java
*
* Created on 2007年11月21日, 下午12:53
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/package emailgiant.Tools;import javax.swing.*;
import java.util.*;
import java.util.regex.*;
/**生成一个线程显示时间。
*
* @author KILLer
*/
public class TimeShow extends Thread{
private JLabel time,date;
private boolean tag;//控制线程的开始,停止
private Date nowTime;
private static String now,dateNow;
/**构造函数
* @param t 显示时间的标签。
* @param d 显示日期的标签。
*/
public TimeShow(JLabel t,JLabel d) {
time=t;
date=d;
tag=true;
}
/**停止线程。
*/
public void Stop(){
tag=false;
}
/**线程执行部分。
*/
public void run(){
while(tag){
nowTime=new Date();
now=nowTime.toString();
dateNow=DateHandler.dateHandler(nowTime);
now=slip(now);
time.setText(now);
if(!this.date.getText().equals(date))
this.date.setText(dateNow);
try{
sleep(1000);
}
catch(Exception e){
e.printStackTrace();
}
}
}
/**得到当前时间。
*/
public static String GetTime(){
return dateNow+" "+now;
}
/**将日期转化格式为XXXX-XX-XX。
* @param date 将被转化的日期。
*/
public static String ConvertTime(Date date){
String time=slip(date.toString());
String datet=DateHandler.dateHandler(date);
return datet+" "+time;
}
/**以空格为标记分隔字符串。
*/
private static String slip(String s){
Pattern p=Pattern.compile("[\\s]+");
String[] date=p.split(s);
return date[3];
}
}
/*
* DateHandler.java
*
* Created on 2007年11月21日, 下午8:58
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/package emailgiant.Tools;import java.util.*;
import java.util.regex.*;
/**生成格式为XXXX-XX-XX日期
*
* @author KILLer
*/
public class DateHandler {
/**构造函数
* @param date 将被转化的日期。
* @return 指定格式的日期。
*/
public static String dateHandler(Date date){
String tmp=date.toString();
Pattern p=Pattern.compile("[\\s]+");
String[] value=p.split(tmp);
String dateNow=value[5]+"-"+value[1]+"-"+value[2];
return dateNow;
}
}
把显示时间,日期的标签传入TimeShow的构造函数,然后TimeShow.start()就可以了