Lab01+Lab02 繼續熟悉 Java JDK 與 Eclipse IDE 並寫心得


 第二週除了繼續熟悉上週給的 gigi.jar 之外, 
也要練新給的 haha.jar : 可以當作 Java application, 也可以當作 Applet 
(Applet + HTML 網頁) 但這個範例是故意寫成也可以當獨立的 Java application

點這抓 haha.jar 
 (第二週的練習心得可以與第一週的寫在一起 post 在 e3.nctu.edu.tw)


    請注意: 做好習題請在 e3.nctu.edu.tw 習題版 post (注意不要潑錯版)
 且 注意 Subject: LAB01 from 學號姓名 (你的學號與姓名)
 內容是心得, 然後是 Running Script, 再來接著Line numbers程式碼,
 必要時可以有一個夾檔副件; 一定要寫題目號碼以方便 post 錯版仍可認出(會扣分:-()

Description: 
    第一週和第二週請練用範例熟悉JDK與 Java IDE, 然後把心得寫到討論區
    至少要寫200字, 最多300字! 
 注意:第二週給的 haha.jar 是一個 Applet+HTML的範例!   (也可當作 Application) 
這兩週心得必須在 2011/03/01星期二晚上23:59之前post完成! 之後都算遲交! 
如果要 post 第二篇, 請用回覆自己的方式(follow up自己那篇)!

Purpose: 熟悉 JDK/Java IDE 和 Java 手冊, 以及 Java程式的編譯與執行 
  * 熟悉如何從 java.sun.com 抓 JDK 來安裝, 設定, 使用
  * 如何設定 path? 如何設定成永遠有效? (從我的電腦...內容..)
  * 抓現成 Java application programs 來測試
  * 可抓所給 Java 範例程式來測試 (gigi.jar 解壓縮後有多個 Java 範例)
  * compile java? run a java application?
  * 注意系計中和學校計中的預設環境有些微不同! 測試看看!
  * 要產生 Line number 可以用以前給的 linenum.c 或是新給的 lineno.java

點這抓 haha.jar  (for 第二週)

點這抓 lineno.java 
點這抓 lineno.class 

點這抓 gigi.jar 
點這抓 linenum.c 
點這抓 linenum.exe 

萬一:
   萬一 e3.nctu.edu.tw 有問題時,
請大家先把練習心得與結果自己用 text 檔或 HTML 或 Word 保存,
建議把相關資料檔案都放在子目錄 Lab??_學號 然後
壓縮成一個 ZIP 檔 或 .jar 檔也可
把該 ZIP 檔 mail 給自己存放 gmail.com 和 mail.yahoo.com.tw
等以後系統恢復再弄上去 !


注意我們以後所謂的繳交資料必須照這順序:
   心得 + running script + 有line#的完整程式
就是一定要先寫心得, 否則分數會很低!





Additional description 說明: 
  建議把範例 MyFirstCoffee.java 拿來改:  
  (1) 在 class 內加入變數  int kk=0;
  (2) 在 paint(Graphics g) { 內加入這句:
            System.out.println(" paint kk="+kk++);
  (3) 在 class 內新增兩個 functions:
     public void destroy( ) {
        System.out.println(" destroy kk=" + kk++);
     }
     public void start( ) {
        System.out.println(" start kk=" + kk++);
     }
  (4) 在 init 函數內也印出一些資料, 以便知道有執行到它
  (5) 把你的學號寫到 Java 程式中
      注意 Java 程式中不可有你的姓名
  (6) 把你的姓名寫在可測試該 MyFirstCoffee 的 HTML 網頁檔中
      注意 HTML 檔案 中不可有你的 學號 !
  (7) 執行 html 檔案 (用 IE 或 Firefox 或  任何瀏覽器)
      畫面必須有你的學號和姓名 ! 自由安排畫面位置
      HTML 檔在上課的投影片內就有, 或用本頁後面的 00test.htm
      (或是解開 haha.jar 後子目錄內的 yy.htm)
      用滑鼠在 Applet 畫面上點幾下看看
  (8) 想辦法把 Java 主控台 (Console) 叫出來 (舊版在工具 (或檢視) 之下)
      把 Java Console 在你的畫面上移動觀察畫面變化
  (9) 在你 Browser 中網址列打入 www.nctu.edu.tw
      觀察 Java Console 變化
  (10) 在你 Browser 中按上一頁以便回到測試 Applet 那頁
      觀察 Java Console 變化
  (11) 在你 Browser 中按"下一頁"回到 nctu 首頁
      觀察 Java Console 變化
  (12) 重複 (11) (12) 並 觀察 Java Console 變化
  (13) 修改 HTML 檔案, 在 Browser 按 Control_Reload
       (Control 壓著並且點按 重新檢視) 觀察 Java Console 變化
  (14) 用 gogle.com 找有關 repaint 函數資訊 (請不要花超過 10分鐘)
        public void repaint( ) {...
       研究心得也要寫到測試心得中
  (15) 用 gogle.com 找有關 update 函數資訊 (請不要花超過 10分鐘)
        public void update(Graphics ggg ) {...
       研究心得也要寫到測試心得中 


 MyFirstCoffee.java
(注意與投影片講義上的略有不同!)


點按這裡抓 MyFirstCoffee.java
   1 //MyFirstCoffee.java -- by tsaiwn@csie.nctu.edu.tw 
   2 //   ///////////// 注意檔名要與 Class 名相同 
   3 import java.applet.Applet; 
   4 import java.awt.*;    // Graphics, Font, Color, ... 
   5 import java.awt.event.*;   // event related 
   6 public class MyFirstCoffee extends Applet  
   7     implements MouseListener { // so that I can handle MouseEvent 
   8  
   9   public static void main(String x[ ]) { //can be RUN as application 
  10      Frame f = new Frame("Java");   // give me a Frame Object 
  11      MyFirstCoffee me = new MyFirstCoffee( ); 
  12      f.setSize(500,600);     // do NOT forget to set Frame size 
  13      f.add(me);   // add me (Applet is Panel) into Frame (is Window) 
  14      f.setVisible(true); 
  15      me.init( );  // simulate Applet 
  16      me.start( ); // .. 
  17   }//main( 
  18   public void update(Graphics ggg ) { 
  19       System.out.println(" update kk=" + kk++); 
  20       //ggg.clearRect(0, 0, getSize().width, getSize().height); 
  21       paint(ggg); 
  22   }//update( 
  23   public void repaint( ) { 
  24       super.repaint( ); 
  25       System.out.println(" repaint kk=" + kk++); 
  26   }// repaint( 
  27   public void start( ) { System.out.println(" start kk=" + kk++); }//start 
  28   public void destroy( ) {System.out.println(" destroy kk=" + kk++);} 
  29   
  30    public void init ( ) {   //通常寫只會做一次的工作 
  31         try { 
  32          s= getParameter("MSG");  // 抓 <applet> 裡的參數 MSG放s 
  33         }catch(Exception e) {  
  34           System.out.println("No parameter MSG"); 
  35         } System.out.println(" init kk=" + kk++); 
  36         addMouseListener(this); // on Mouse Click will call functions in "this." 
  37    }//init 
  38       public void paint (Graphics g) {   // 最主要的 function, 把自己這Object畫出來 
  39          System.out.println("paint kk=" + kk++); 
  40          if(s == null ) s= "Ha Ha Ha !\nHee Heeee!"; 
  41                // 在appletviewer抓不到ㄟ,  阿只好 ...(bug? 可能 HTML沒寫好) 
  42          g.clearRect(0, 0, getSize().width, getSize().height); 
  43          g.setColor(Color.blue);  // 所有顏色常數是小寫 ! 怪哉? 因為可以改 
  44          g.setFont( new Font("Courier", Font.BOLD, 32) ); 
  45          //setBackground(Color.green); //這是Applet的method 
  46          g.drawString("Hey You!", 44, 80 ); 
  47  
  48          g.setColor(Color.red);  // 所有顏色常數是小寫 ! 變數! 
  49          g.drawRect(55, 160-32, 20*s.length() , 36);  // red 
  50          g.setColor(Color.yellow); 
  51          g.fillRect(57, 160-32+2, 20*s.length()-4 , 36-4); 
  52          /// 
  53          g.setFont( new Font("Courier", Font.PLAIN, 24) ); 
  54          g.drawString("s.length()="+s.length(), 60, 220); 
  55          g.setFont( new Font("Courier", Font.BOLD, 32) ); 
  56          g.setColor(Color.magenta);  // magenta 
  57          g.drawString(s, 60, 160 );          
  58          g.setFont( new Font("標楷體", Font.BOLD, 32) ); 
  59          g.setColor(Color.orange);  // orange 
  60          g.drawString(s, 60, 280 );          
  61       }// paint( 
  62    // because implements MouseListener, we have to write these: 
  63     public  void mousePressed(java.awt.event.MouseEvent e){ } 
  64     public void mouseReleased(java.awt.event.MouseEvent e){} 
  65     public void mouseEntered(java.awt.event.MouseEvent e){} 
  66     public void mouseExited(java.awt.event.MouseEvent e){} 
  67     public void mouseClicked(MouseEvent e) { 
  68          System.out.println(" kkk kkk kkk"); 
  69          Color xx[ ] = {Color.red, Color.blue, Color.green}; 
  70          myColor++; myColor %= xx.length; 
  71          setBackground( xx[myColor] ); 
  72          repaint( ); 
  73     } // mouseClicked(   // 滑鼠要在 Applet 上 Click 才有效 
  74     int myColor=0; 
  75     int kk=0; 
  76     String s; // global 變數以便後續 function 也可用 
  77 }// class 

點按這裡抓 MyFirstCoffee.java
以下是可用來測試 MyFirstCoffee 的 HTML 網頁: 00test.htm
<HTML>
<BODY>
  這線以下是一個 Applet 
   <HR width=66% color=red size=3>
  <APPLET code="MyFirstCoffee.class" width=580 height=320>
     <PARAM name="MSG" value="I am Big Head Lee 李大頭!">
     <param name="P2" value = "No use this time">
  </applet>
  <!-- 注意在 APPLET tag 中的class檔名大小寫要與你的 class 檔完全相同!
    ---------------  -->
  <HR width=88%>
</body>
</html>
按這裡 00test.htm 從網頁測試 MyFirstCoffee.class 或是, 把 haha.jar 解壓縮後在 haha 子目錄內有個 yy.htm 也是測試該 Applet 用的
(注意這 Java 程式也可以當作 Java Application 獨立程式)


參考資料: (a) java.sun.com 找 Java SE 1.6 (6.0) 的 API 連到 java.sun.com (b) www.cplusplus.com C++參考好站 (c) http://gcc.gnu.org/onlinedocs/libstdc++/manual/spine.html (d) http://www.csie.nctu.edu.tw/~tsaiwn/oop/02_handouts/ (e) http://www.csie.nctu.edu.tw/~tsaiwn/oop/java/03_sample_JavaPrograms/ 不懂就舉手找助教來聊天 ! 不懂就舉手找助教來聊天 ! 不懂就舉手找助教來聊天 !
You are the -th visitors to this page.
回到作業目錄             回到課程目錄