熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

用Java繪制K線圖

2013-11-15 11:36:29  來源: JSP教程 

  Java語言中的Applet(Java小程序)和Application(Java應用程序)是在結構和功能上都存在很大差異的兩種不同的編程方式Applet應用於Web頁上可做出多姿多彩的頁面特效給網站增輝添色Application則與其他編程語言(如VBVC)一樣可編制各種應用程序
    本文要討論的是第一種情況在Web頁上用Java Applet繪制K線圖
    K線是股市行情分析中的一種參數指標用股票每日的開盤價最高價最低價收盤價及成交量等數據進行作圖配合五日十日均線便可反映出一個階段內該支股票的漲跌走勢
    Java Applet所做的K線圖多應用於證券類型的網站以方便網上股民的分析操作不過由於我國網速的關系目前有些證券類網站把K線圖做成了圖片以節省下載的時間當然其繪制K線所用的工具(Java Applet)及繪制方法還是相同的
    在編寫繪制K線的Java Applet時有幾處關鍵問題要解決)多線程的使用)布局管理器的選擇)數據輸入輸出流的應用)設置監聽鼠標與鍵盤事件
    下面通過一個實例來詳細闡述整個編程過程和方法《查看演示》
    一使用多線程
    一個完整的Java Applet包含四個方法Init()Start()Stop()Destroy()(即初始化開始停止清除)構成一個完整的生命周期其運行次序也是由上而下順序執行
    在繪制K線圖的過程中除了要繪制窗體及代表股票升降的陰線陽線矩形外還要監聽鼠標事件並同時繪制一個自由移動的十字游標來定位顯示所檢索股票每日的各種價格數值(如開盤價收盤價等)這時為了避免閃爍和減少重新計算的等待時間除了重繪跟隨鼠標移動的十字游標外對頁面的布局及陰線陽線矩形等不進行重繪這就需要應用多線程來完成該項任務
    .關於多線程的一些基本概念
    多線程實際上就是啟動另一個進程其運行的過程獨立於主程序之外並從主程序的Start()方法載入由Run()方法調用執行實現多線程的方法有兩種創建Thread類的子類(類的繼承)和實現runnable接口
    為便於使用Java把所有有關線程的功能封裝成Java類庫中的一個類JavalangThread通過這個類Java可以創建控制和終止線程完成有關多線程的所有操作
    在Java語言中一個子類只能繼承一個超類(父類)由於我們所要編寫的Java Applet是應用於網頁中的首先必須繼承浏覽器類(javaapplet)因此在本例中我們通過實現runnable接口的方法來實現多線程實現的語句如下
    public class StockApplet extends javaappletApplet implements Runnable
    .多線程的應用
    首先在Init()方法中對要創建的線程(M_pointThread)進行定義及初始化
  Thread M_pointThread=null;
    然後在Start()和Stop()方法中加入以下代碼
    //當打開浏覽器頁面開始載入Java Applet代碼時執行start()方法
  public void start()
  {
  if (M_pointThread==null) //如果線程尚未產生
  {
  M_pointThread=new Thread(this); //則創建一個新線程
  M_pointThreadstart(); //啟動該線程
  }
  }
    //在當前頁面關閉或轉向其他Web頁面時
    調用stop()方法以釋放系統資源
  public void stop()
  {
  if (M_pointThread!=null) //如果線程尚在運行
  {
     M_pointThreadstop(); //停止該線程
     M_pointThread=null; //釋放線程所占資源
  }
  }
    .編寫線程運行的代碼
    public void run()
    {
  M_graphics=getGraphics();
  M_graphicssetXORMode(Colorwhite); //采用異或方法繪制十字游標
  while(true)
     { 
  try
    {
      if(MouseMove==true) //偵測到鼠標的移動後執行以下代碼
  { //當鼠標位於以下區域(Java Applet布局)內時執行畫線操作
   if(x > && x< ){M_graphicsdrawLine(xx);}
   if(y > && y <){M_graphicsdrawLine(yy);}
     if(X > && X< ){M_graphicsdrawLine(XX);}
       if(Y > && Y< ){M_graphicsdrawLine(YY);}
   MouseMove=fase;
   x=X; //傳遞當前座標參數
   y=Y;
  }
  }
  catch(NullPointerException npe){} //捕獲可能出現的異常
    }
    二布局管理器
    本例中的Java Applet運行時要在頁面上Java Applet的運行區域內繪制相應的標簽來顯示不同的數值並要加入一個文本框來接收輸入的股票代碼對這些標簽文本框位置及大小的設定便屬於布局管理的應用范疇
    Java語言中提供的布局管理器種類有邊界式布局卡片式布局流式布局和網格式布局等各有不同的特點可根據實際需要選用但有最大自由設計空間的是無布局管理器——即不使用任何布局格式而通過手工方式添加組件到頁面布局的絕對位置上本例中使用的便是無布局管理器
    在使用無布局管理器首先要作出聲明
    setLayout(null);
    然後用reshape()方法指定組件的具體位置和尺寸
    基本語句如下所示
    Label label=new Label(); //定義標簽
  thisadd(label);   //把標簽加入布局管理器
  labelreshape(); //在指定位置繪制標簽
    對於多個標簽和文本框參照此格式添加即可
    三輸入輸出數據流
    Java Applet在客戶端浏覽器上運行時要從服務器端讀取股票的相關數據進行做圖這就涉及到Java數據流的運用
    Javaio包提供了多個用於與各種I/O設備交換信息的類其最頂層的兩個類便是輸入流類(InputStream)和輸出流類(OutputStream)
    為了便於實現在本例中我們先在服務器端把股票數據庫(如showdbf)中的有關字段寫入一文本文件中(其格式為第一行為股票的漢字名稱以後每一行內包括開盤日期開盤價最高價最低價收盤價成交量)並以該支股票的代碼作為文件名(如txt)然後再用Java Applet從服務器端的文本文件中讀取數據這樣就把對服務器端數據庫的訪問轉化為對文件的I/O操作實現的語句如下
  URL urlc=new URL(+FileName+txt);
  BufferedReader bis=new BufferedReader(new InputStreamReader(urlcopenStream()));
    注第一條語句中的為在本機執行調試操作的URL地址在上傳到服務器上後要做相應的修改FileName為要讀取的文本文件名
  第二條語句定義了讀取輸入數據流的方法
    四監聽鍵盤及鼠標事件
    在Java Applet小程序中單擊按鈕鍵入文本使用鼠標或執行任何與界面相關的動作時就發生一個事件小程序就會作出適當的反應
    在本例中我們通過使用action()方法來獲得Java Applet小程序運行時所發生的事件語句格式如下
    public boolean action(Event evtObject arg)
  {
  FileName=textgetText(); //提取文本框中輸入的參數
  ReadData();  //調用讀數據流數據的方法
  return true; //處理完畢不需要其他方法再做處理
  }
    上面的action()方法中含有兩個參數一個是Event類的一個對象evt另一個是Object類的一個對象argEvent對象告訴我們發生了哪種事件而Object對象將進一步告訴我們有關該事件的情況每當有Event監聽的事件發生時Java Applet便自動調用該action()方法
    至此在掌握了上述編程中的一些要點後我們便可以成功地編制出一個完整的繪制K線的Java Applet小程序了(完整的源代碼下載)
    五編制HTML文檔(l)
    程序編制完成後另外要做的是設置在Web頁面上調用Java Applet的頁面即編制HTML文檔l文檔的示例代碼如下
  
  < HEAD >
  < TITLE >股票K線圖< /TITLE >
  < /HEAD >
  
  
  
  < /body >
  < /HTML >
    在< APPLET >< /APPLET >標簽對內是對Java Applet小程序的調用代碼其中的StockAppletclass是經編譯後生成的class文件codeBase指向的是class文件所存放的路徑如果class文件與HTML文檔存放在同一目錄下則可以省略這一項
    至此編制Java Applet小程序的工作便全部完成
    在個人計算機上進行調試時首先要安裝個人Web服務然後把StockAppletclass與HTML文檔一起拷貝到本機的WWW服務目錄下(如C:\Inetpub\wwwroot\)打開浏覽器在地址欄內輸入回車進行測試操作
    調試通過後便可上傳至服務器投入運行了
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19286.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.