看板java
标 题Re: [J2SE] 请问thread的run方法中是不是有什麽限制
发信站无名小站 (Wed May 10 10:02:46 2006)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!wretch
※ 引述《[email protected] (visit)》之铭言:
> 我有三个class
> class ClockTemp --主程式
> class Clock --计算时间与执行thread
> class UI --显示ui介面
> 我打算让时间显示在ui上面,所以让class UI所产生的JLabel物件
> 传送到clas Clock的run()方法当中,让时间不断变动显示.
> 但是我发现在Clock当中使用JLabel.setText(...)没问题,
> 但如果放到Clock类别当中的run()方法时候,compiler ok,但一执行就会出现
> java.lang.NullPointerException这个例外...
> 所以想请教放到执行绪的run()方法中有什麽要特别注意的吗?
> 以下是我的程式码ClockTemp.java
> import java.util.*;
> import javax.swing.*;
> import java.awt.*;
> public class ClockTemp{
> public static void main(String[] argvs){
> UI ui = new UI();
> ui.timeLabelNow.setText("dkjasdfj");
> Clock clock = new Clock(ui.timeLabelNow);
> }
> }
> //----------------------------------------
> class Clock extends Thread{
> JLabel labelTemp;
> Clock(JLabel labelTemp){
this.labelTemp = labelTemp;
> Thread clock = new Thread(this);
> clock.start();
> }
> public void run(){
> labelTemp.setText("KKKKKKKKKKKKKKKKKK"); //------>fail when running
> while(true){
> System.out.println(getTimeNow()); //------>ok
> try{
> Thread.sleep(1000);
> }catch(java.lang.InterruptedException e){
> System.out.println("thread error");
> }
> }
> }
> String getTimeNow(){
> GregorianCalendar gc = new GregorianCalendar();
> return gc.get(GregorianCalendar.HOUR)+":"+
> gc.get(GregorianCalendar.MINUTE)+":"+
> gc.get(GregorianCalendar.SECOND);
> }
> }
> //-----------------------------------------------
> class UI extends JFrame{
> JLabel timeLabelNow = new JLabel("initial");
> UI(){
> super("Clock");
> setupUI();
> }
> void setupUI(){
> this.setVisible(true);
> this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
> Container contentPane = this.getContentPane();
> JPanel pc = new JPanel();
> contentPane.add(pc,BorderLayout.CENTER);
> pc.add(timeLabelNow);
> this.pack();
> }
> }
--
夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子
之器不得已而用之恬淡为上胜而不美而美之者是乐杀人夫乐杀人者则不可得志於天下
矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以
丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦将知止知止可以不殆譬道之在天下202.75.4.140海