線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1401
推到 Plurk!
推到 Facebook!

drawString 的輸出問題

答題得分者是:neoart
warke
一般會員


發表:19
回覆:32
積分:10
註冊:2004-09-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-29 09:14:56 IP:218.170.xxx.xxx 未訂閱
底下是小弟的程式碼
import java.awt.*;
import java.applet.*;
import java.awt.event.*;    public class Board01 extends Applet
{
  public void init()
  {
    String lb01 = "輸出string測試";
  }
  public void paint(Graphics g)
  {
    g.drawString(lb01,10,10);
  }
}
出現的錯誤訊息是
D:\Tomcat 4.1\webapps\JavaTest>javac Board01.java
Board01.java:9: cannot find symbol
symbol  : variable lb01
location: class Board01
                g.drawString(lb01,10,10);
                             ^
請問一下小弟是哪邊出錯了呢?
 
 
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-29 09:46:04 IP:202.64.xxx.xxx 未訂閱
你的lb01是只有在 init()中存在,出了這函數就無法參考了. 所以請在最外圍宣告此一變數吧:
public class Board01 extends Applet
String lb01="";
{
  public void init()
  {
    lb01 = "輸出string測試";
  }
  public void paint(Graphics g)
  {
    g.drawString(lb01,10,10);
  }
}
warke
一般會員


發表:19
回覆:32
積分:10
註冊:2004-09-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-29 10:09:51 IP:218.170.xxx.xxx 未訂閱
引言: 你的lb01是只有在 init()中存在,出了這函數就無法參考了. 所以請在最外圍宣告此一變數吧:
public class Board01 extends Applet
String lb01="";
{
  public void init()
  {
    lb01 = "輸出string測試";
  }
  public void paint(Graphics g)
  {
    g.drawString(lb01,10,10);
  }
}
在init(){}裡面的東西不是說在程式剛啟動的時候會執行過一遍嗎?那麼在哪邊宣告好像應該是沒有問題的說^^"。 然後依照neoart大大的說法,小弟把上述的程式碼重新compiler了一遍還是一樣發生同樣的錯誤說。QQ"~~ 怎麼會drawString不能輸出string呢>"<~~真氣人
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-29 10:32:32 IP:202.64.xxx.xxx 未訂閱
你應該去看一下物件的生命週期及範圍(scope)的觀念討論.
public class Board01 extends Applet
{
  String lb01="";
  public void init()
  {
    lb01 = "輸出string測試";
  }
  public void paint(Graphics g)
  {
    g.drawString(lb01,10,10);
  }
}
剛才忙中有錯. 如果你compile再有錯的話,麻煩再post一下你的code.
warke
一般會員


發表:19
回覆:32
積分:10
註冊:2004-09-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-29 11:52:45 IP:218.170.xxx.xxx 未訂閱
引言: 你應該去看一下物件的生命週期及範圍(scope)的觀念討論.
public class Board01 extends Applet
{
  String lb01="";
  public void init()
  {
    lb01 = "輸出string測試";
  }
  public void paint(Graphics g)
  {
    g.drawString(lb01,10,10);
  }
}
剛才忙中有錯. 如果你compile再有錯的話,麻煩再post一下你的code.
很感謝neoart大大的回應,程式已經可以囉。 不過小弟針對生命週期及範圍看書的結果有些疑問,請問是直接回應這篇文章還是新開一個討論呢?
warke
一般會員


發表:19
回覆:32
積分:10
註冊:2004-09-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-29 12:02:05 IP:218.170.xxx.xxx 未訂閱
引言:
引言: 你應該去看一下物件的生命週期及範圍(scope)的觀念討論.
public class Board01 extends Applet
{
  String lb01="";
  public void init()
  {
    lb01 = "輸出string測試";
  }
  public void paint(Graphics g)
  {
    g.drawString(lb01,10,10);
  }
}
剛才忙中有錯. 如果你compile再有錯的話,麻煩再post一下你的code.
很感謝neoart大大的回應,程式已經可以囉。 不過小弟針對生命週期及範圍看書的結果有些疑問,請問是直接回應這篇文章還是新開一個討論呢?
在Applet架構中,提供了四個方法,分別是:init()、start()、stop()、destroy()。 init()所指的是initial,也就是說當成是被啟動時,他是最先被執行的方法,只被執行一次之後就不會重新啟動。 start()和init()有點像,唯一的差別是說當按了上一頁等方式時會重新被執行到。 stop()、和estroy()不在這次的討論中。 那小弟的感覺是說:既然這樣的話,根據init()和start()的特性,我會把變數宣告、元件的位置大小等等設定放在這邊;而Start()中放applet的主程式碼,因為他不論最大化或者是看別的網頁之後又看回來這個網頁都會重新做一次裡面的動作。 然後發生了繼承的問題,小弟知道錯了>"<~~以後小弟會注意的。 不要打我阿阿阿阿阿阿~~~
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-29 12:54:36 IP:202.64.xxx.xxx 未訂閱
你誤解我的意思了: 我指的是為何在init中宣告,而在paint中卻無法參考到lb01這個變數的問題.基本上真的是跟init或paint兩者孰為先後是無關的.真的只是lb01的在函數中scope & visibale(可視)與否的問題罷了
系統時間:2024-05-09 15:05:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!