請問「JAVA物件導向」程式碼的問題

請問有程式高手可以幫小女我解決這個問題嗎?

因為需要瞭解程式的運作,於是需要一些程式碼的中文意思,

不知哪位大大有能力幫忙呢?有一些已經是知道意思的了,

我希望是每一行的指令或是英文都有正確的翻譯解釋…

謝謝各位有空的大大們囉!

相對的我會給予20點作為辛苦的獎勵,謝謝^^!

----------------------------

【程式碼內容】

import java.applet.*;

import java.awt.*;

public class UpdateScreen extends Applet implements Runnable

{ String message = " Welcom to the palnet earth ... ";

Thread t = null;

boolean running = true;

public void init()

{ setBackground(Color.white); //設定applet視窗背景顏色

setForeground(Color.red); //設定applet視窗前景顏色

t = new Thread(this); //建立畫面更新執行緒

t.start(); //啟動執行緒

t.suspend(); //暫時停止執行緒

}

public void start()

{ t.resume(); //恢復執行緒的執行}

public void paint(Graphics g)

{ g.drawString(message, 1, 15); //顯示跑馬燈內容 }

public void stop()

{ t.suspend(); //暫時停止執行緒}

public void destroy()

{ if (t!= null) //applet要被移除時執行

{ t.stop(); t=null;}

}

public void run() //新建立之執行緒的執行進入點

{ char c;

while (running)

{ try {t.sleep(250); // 模擬跑馬燈的顯示文字的時間間隔

} catch (InterruptedException e) {}

c = message.charAt(0); //更新message的內容以便於輸出時產生跑馬燈的效果

message = message.substring(1, message.length());

message = message + c;

repaint(); //更新applet視窗}

}

} // end of UpdateScreen

----------------------------

【有些已經有知道意思了,其餘的地方還請大大們幫忙~】

Update:

感謝Kyle_Cheng大大的回答^^,

Mark起來的令人淺顯易懂,非常好的解釋方法,

很感謝這位大大的幫忙!^^(鞠躬)

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    你的程式碼裏有些寫法是不被建議使用的

    不建議使用的我把它 Mark起來, 改寫如下

    ==================================================

    import java.applet.*;

    import java.awt.*;

    public class UpdateScreen extends Applet implements Runnable {

    String message = " Welcom to the palnet earth ... ";//跑馬燈字串

    Thread t = null;

    //boolean running = true;

    public void init() {

    setBackground(Color.white); // 設定applet視窗背景顏色

    setForeground(Color.red); // 設定applet視窗前景顏色

    t = new Thread(this); //建立畫面更新執行緒

    t.start(); //啟動執行緒 讓Virtual Machine call run method

    //t.suspend(); // 暫時停止執行緒-- 不建議用,易造成 deadlock

    }

    //public void start() {

    //t.resume(); // 不建議使用 --跟 suspend()同一組 suspend不建議使用 resume也就沒用了

    //}

    public void paint(Graphics g) {

    g.drawString(message, 1, 15); // 顯示跑馬燈內容

    }

    //public void stop() {

    //t.suspend(); // 暫時停止執行緒

    //}

    public void destroy() {

    //if (t != null) { // applet要被移除時執行

    //t.stop();//停止執行緒 不安全,不建議使用

    //t = null;

    //}

    t = null;//中斷執行緒

    //t.interrupt();//也可以 中斷執行緒

    }

    public void run() // 新建立之執行緒的執行進入點

    {

    char c;

    Thread thisThread = Thread.currentThread();// 將 thisThread 設為目前執行緒

    while (t==thisThread) {

    try {

    t.sleep(250); // 模擬跑馬燈的顯示文字的時間間隔

    } catch (InterruptedException e) {

    }

    c = message.charAt(0); // 更新message的內容以便於輸出時產生跑馬燈的效果 取得跑馬燈字串一個字

    message = message.substring(1, message.length());//重設跑馬燈字串 2~最後一個

    message = message + c; //將第一個字重新放到跑馬燈字串的最後

    repaint(); // 更新applet視窗

    }

    }

    } // end of UpdateScreen

    2008-01-15 23:37:38 補充:

    請忽略這段 已被我Mark起來, 註解有誤

    //t.interrupt();

    interupt:

    1. 中斷wait(), sleep(), join()等狀態的thread.

    2. 從wait(), sleep(), join() 中丟出InterruptedException, thread的控制權便會轉入catch block.

    Source(s): 個人
  • 1 decade ago

    嗯嗯,

    謝謝您的意見!

    我馬上去找找!

Still have questions? Get your answers by asking now.