站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于线程的一个问题

关于线程的一个问题

摘要: 关于线程的一个问题


package mypack;
import java.awt.*;
import javax.swing.*;
import java.util.Date;
public class Clock extends JFrame
{
private Date d=new Date();
private Container con;
private JLabel jtime=null;
private Ctime go;

class Ctime extends Thread
{
public void run(){
try{
while(true){Thread.sleep(1000);
jtime.setText(-#34;-#34;+(d.getYear()+1900)+-#34;年-#34;+(d.getMonth()+1)+-#34;月-#34;+d.getDate()+-#34;日-#34;+d.getHours()+-#34;点-#34;+d.getMinutes()+-#34;分钟-#34;+d.getSeconds()+-#34;秒-#34;);
con.setLayout(new BorderLayout());

}

}catch(Exception e){}

}

}
Clock()
{

con=this.getContentPane();
jtime =new JLabel(-#34;0-#34;);
con.add(jtime);
this.setSize(200,100);
this.setVisible(true);
go = new Ctime();

}
public static void main(String[] str)
{
Clock ob = new Clock();
Clock.Ctime ob2 =ob.new Ctime();//用了一个内部类的调用
ob2.start();
}
}
为什么我运行后时间是不动的啊?谁能指教我一下啊,我学java没久,对线程的理解还不是很明白


这是修改后的代码,自己看看
package mypack;
import java.awt.*;
import javax.swing.*;
import java.util.Date;
public class Clock extends JFrame
{

private Date d;
private Container con;
private JLabel jtime=null;
// private Ctime go;

class Ctime extends Thread
{
public void run(){

while(true)
{
d=new Date();
String str=-#34;-#34;+(d.getYear()+1900)+-#34;年-#34;+(d.getMonth()+1)+-#34;月-#34;+d.getDate()+-#34;日-#34;+d.getHours()+-#34;点-#34;+d.getMinutes()+-#34;分钟-#34;+d.getSeconds()+-#34;秒-#34;;
jtime.setText(str);
try{
Thread.sleep(1000);
}
catch(Exception e){}
}

}

}
Clock()
{

con=this.getContentPane();
con.setLayout(new BorderLayout());
jtime =new JLabel(-#34;0-#34;);
con.add(jtime);
this.setSize(200,100);
this.setVisible(true);
//go = new Ctime();

}
public static void main(String[] str)
{
Clock ob = new Clock();
Clock.Ctime ob2 =ob.new Ctime();//用了一个内部类的调用
ob2.start();
}
}


}catch(Exception e){}



得到一个时间对象一定要记得在Run方法里获得,否则你得到是一个死的对象,无法改变



你所做的是每一秒获得一次时间变化,启动线程后,就需要new 一个时间对象出来


↑返回目录
前一篇: 一个小问题,马上给分
后一篇: 【请教】关于Inner Class的一点疑问