jsenter

          2005年3月31日 #

          JAVA的IO學習全面講解。

          IO兩大主流,16位和8位
          16位對應Writer 和 Reader
          根據編程目的不同有
          FileWriter和FileWriter        對文件進行讀寫。
          StringWriter、StringReader    對內存里的位置進行讀寫。
          PipedWrier、PipedReader       兩個線程間通訊用

           8位對應InputStream 和 OutputStream
          根據編程目的不同有
          FileInputStream、FileOutputStream            對文件進行讀寫
          ByteArrayInputStream、ByteArrayOutputStream  對字節數組進行讀寫
          PipedInputStream、PipedOutputStream          線程間通訊用
          注意:在數據流里不存在字符串的IO操作,那樣就要用Reader和Writer類

          二者的橋梁在InputStreamReader、OutputStreamWriter

          BufferedWriter、BufferedReader、BufferedInputStream、BufferedOutputStream

          是用來提高IO速度的,注意包裝的時候最好最先包裝Buffered,這樣效果會好些。

          包裝模式的理解。Package Pattern

          各種Data Type的長度的記憶.
          還要注意對象流的使用.

          高級IO操作:
          信道IO,java.nio.channels包
          他的主要特征是可以對內存進行快讀寫操作,進行內存映射.
          同時可以創建各種數據類型的緩沖區,從而提高IO操作效率.

          posted @ 2005-04-24 03:56 李貝 閱讀(862) | 評論 (0)編輯 收藏

          JAVA授權事件模型講解(原創)

          JAVA的授權事件模型包含三個概念:事件源,事件,事件監聽器。

          一,事件源:一個產生事件的對象。當這個對象的內部狀態改變時,事件就會產生。一個事件源必須注冊一個事件監聽器已使監聽器能夠可以接受一個特定時間的通知。每一種事件都有它特定的注冊方法,通用形式為:addTypeListener(TypeListener e)

          二,事件:一個事件是描述了一個事件源的狀態改變的對象。他可能通過一個人與圖形用戶接口的交互產生。如輸入文字,點擊鼠標。也可能不是由這些產生,如:一個事件可能在定時器中到期而產生。當然用戶也可以自由的定義自己的事件。

          注意:其中的Type可以是Key, Mouse,等。一個事件源可能允許注冊多個事件監聽器,也可能只允許注冊一個監聽器。

          事件源也允許注銷一個事件監聽器,通用方法為:removeTypeListener(TypeListener e);

          三,事件監聽器:一個當事件發生時的時候被通知的對象。它有兩個要求:
          1,它必須在事件源中注冊。
          2,它必須實現接受和處理事件通知的方法。

          還是來個比喻吧:你要想成為一個可以接受事件并處理事件的對象(即事件監聽器),必須繼承TypeListener類,其中的Type為事件類型。然后去注冊你想監聽的對象,并自己實現處理事件發生的方法,然后你就坐在等待事件的發生啦,哈哈!


          附源程序研究用:
          /*===============DemoEvent.java清單=============*/
          import java.awt.*;
          import java.awt.event.*;
          import java.applet.*;


          public class DemoEvent extends Applet implements MouseListener, MouseMotionListener{
              public String msg = "";
              public int mouseX = 0, mouseY = 0;
              
              /*
              *注冊事件監聽器
              */
              public void init() {
                  addMouseListener(this);
                  addMouseMotionListener(this);
              }

              /*
              *下面為所有處理MouseEvent的方法,當然你可以自定義自己的方法,但不能少了這些。
              */
              public void mouseMoved(MouseEvent me) {
                  showStatus("mouse moved at :"+me.getX() +"," + me.getY());    
              }
              public void mouseReleased(MouseEvent me) {
                  mouseX = me.getX();
                  mouseY = me.getY();
                  msg = "UP";
                  repaint();    
              }
              public void mouseClicked(MouseEvent me) {
                  mouseX = 0;
                  mouseY = 10;
                  msg = "Mouse clicked!";
                  repaint();
              }
              public void mouseEntered(MouseEvent me) {
                  mouseX = 0;
                  mouseY = 10;    ;
                  msg = "Mouse Entered!";
                  repaint();
              }
              public void mouseExited(MouseEvent me) {
                  mouseX = 0;
                  mouseY = 0;
                  msg = "Mouse Exited!";
                  repaint();
              }
              public void mouseDragged(MouseEvent me) {
                  mouseX = me.getX();
                  mouseY = me.getY();
                  msg = "*";
                  repaint();    
              }
              public void mousePressed(MouseEvent me) {
                  mouseX = me.getX();
                  mouseY = me.getY();
                  msg = "Down";
                  repaint();
              }
              /*===================方法說明結束==================*/    
              public void paint(Graphics g) {
                  g.drawString(msg, mouseX, mouseY);
              }
          }
          /*
          *相關說明:這里的DemoEvent既是事件源也是事件監聽器。
          *
          */
          /*===================DemoEvent.java清單===================*/

          posted @ 2005-03-31 22:44 李貝 閱讀(1383) | 評論 (4)編輯 收藏

          主站蜘蛛池模板: 吉水县| 南安市| 乐亭县| 广元市| 内江市| 葫芦岛市| 临漳县| 湘乡市| 榆中县| 钦州市| 达州市| 屏东县| 万全县| 抚顺市| 淮安市| 西城区| 七台河市| 宁波市| 香河县| 马关县| 张家界市| 图们市| 扬中市| 寿阳县| 平顶山市| 康定县| 收藏| 嵊州市| 八宿县| 松江区| 华容县| 富宁县| 阳曲县| 平果县| 馆陶县| 迁西县| 新巴尔虎右旗| 紫阳县| 杭锦旗| 鸡泽县| 广丰县|