亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

用Java繪制K線圖

2019-11-18 13:27:09
字體:
來源:轉載
供稿:網友

  java語言中的Applet(Java小程序)和application(Java應用程序)是在結構和功能上都存在很大差異的兩種不同的編程方式。Applet應用于Web頁上,可做出多姿多彩的頁面特效,給網站增輝添色;Application則與其他編程語言(如VB、VC)一樣,可編制各種應用程序。
    本文要討論的是第一種情況,在Web頁上用Java Applet繪制K線圖。
    K線是股市行情分析中的一種參數指標,用股票每日的開盤價、最高價、最低價、收盤價及成交量等數據進行作圖,配合五日、十日均線便可反映出一個階段內該支股票的漲跌走勢。
    Java Applet所做的K線圖多應用于證券類型的網站,以方便網上股民的分析操作。不過由于我國網速的關系,目前有些證券類網站把K線圖做成了圖片以節省下載的時間。當然,其繪制K線所用的工具(Java Applet)及繪制方法還是相同的。
    在編寫繪制K線的Java Applet時,有幾處要害問題要解決,即:1)多線程的使用;2)布局治理器的選擇;3)數據輸入、輸出流的應用;4)設置、監聽鼠標與鍵盤事件。
    下面通過一個實例,來具體闡述整個編程過程和方法?!恫榭囱菔尽?
    一、使用多線程
    一個完整的Java Applet包含四個方法,Init()、Start()、Stop()、Destroy()(即:初始化、開始、停止、清除),構成一個完整的生命周期,其運行次序也是由上而下順序執行。
    在繪制K線圖的過程中,除了要繪制窗體及代表股票升降的陰線、陽線矩形外,還要監聽鼠標事件并同時繪制一個自由移動的“十字”游標,來定位顯示所檢索股票每日的各種價格數值(如開盤價、收盤價等);這時,為了避免閃爍和減少重新計算的等待時間,除了重繪跟隨鼠標移動的“十字”游標外,對頁面的布局及陰線、陽線矩形等不進行重繪;這就需要應用多線程來完成該項任務。
    1.關于多線程的一些基本概念:
    多線程實際上就是啟動另一個進程,其運行的過程獨立于主程序之外,并從主程序的Start()方法載入、由Run()方法調用執行。實現多線程的方法有兩種,即:創建Thread類的子類(類的繼續)和實現runnable接口。
    為便于使用,Java把所有有關線程的功能封裝成Java類庫中的一個類:Java.lang.Thread。通過這個類,Java可以創建、控制和終止線程,完成有關多線程的所有操作。
    在Java語言中,一個子類只能繼續一個超類(父類),由于我們所要編寫的Java Applet是應用于網頁中的,首先必須繼續瀏覽器類(java.applet);因此,在本例中我們通過實現runnable接口的方法來實現多線程,實現的語句如下:
    public class StockApplet extends java.applet.Applet implements Runnable
    2.多線程的應用:
    首先,在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_pointThread.start(); //啟動該線程
  }
  }
    //在當前頁面關閉或轉向其他Web頁面時,
    調用stop()方法,以釋放系統資源
  public void stop()
  {
  if (M_pointThread!=null) //假如線程尚在運行
  {
     M_pointThread.stop(); //停止該線程
     M_pointThread=null; //釋放線程所占資源
  }
  }
    3.編寫線程運行的代碼:
    public void run()
    {
  M_graphics=getGraphics();
  M_graphics.setXORMode(Color.white); //采用異或方法繪制“十字”游標
  while(true)
     { 
  try
    {
      if(MouseMove==true) //偵測到鼠標的移動后,執行以下代碼
  { //當鼠標位于以下區域(Java Applet布局)內時,執行畫線操作
   if(x0 >50 && x0< 600){M_graphics.drawLine(x0,30,x0,380);}
   if(y0 >30 && y0 <380){M_graphics.drawLine(50,y0,600,y0);}
     if(X >50 && X< 600){M_graphics.drawLine(X,30,X,380);}
       if(Y >30 && Y< 380){M_graphics.drawLine(50,Y,600,Y);}
   MouseMove=fase;
   x0=X; //傳遞當前座標參數
   y0=Y;
  }
  }
  catch(NullPointerException npe){} //捕捉可能出現的異常
    }
    二、布局治理器
    本例中的Java Applet運行時,要在頁面上Java Applet的運行區域內繪制相應的“標簽”來顯示不同的數值,并要加入一個“文本框”來接收輸入的股票代碼。對這些“標簽”和“文本框”位置及大小的設定,便屬于布局治理的應用范疇。
    Java語言中提供的布局治理器種類有:邊界式布局、卡片式布局、流式布局和網格式布局等,各有不同的特點,可根據實際需要選用;但有最大自由設計空間的是“無布局治理器”——即不使用任何布局格式,而通過手工方式添加組件到頁面布局的絕對位置上。本例中使用的便是“無布局治理器”。
    在使用“無布局治理器”時,首先要作出聲明,即:
    setLayout(null);
    然后用reshape()方法指定組件的具體位置和尺寸,
    基本語句如下所示:
    Label label1=new Label(); //定義標簽
  this.add(label1);   //把標簽加入布局治理器
  label1.reshape(10,10,30,30); //在指定位置繪制標簽
    對于多個標簽和文本框,參照此格式添加即可。
    三、輸入、輸出數據流
    Java Applet在客戶端瀏覽器上運行時,要從服務器端讀取股票的相關數據進行做圖,這就涉及到Java數據流的運用。
    Java.io包提供了多個用于與各種I/O設備交換信息的類,其最頂層的兩個類便是輸入流類(InputStream)和輸出流類(OutputStream)。
    為了便于實現,在本例中我們先在服務器端把股票數據庫(如:show128.dbf)中的有關字段寫入一文本文件中(其格式為:第一行為股票的漢字名稱,以后每一行內包括:開盤日期、開盤價、最高價、最低價、收盤價、成交量),并以該支股票的代碼作為文件名(如:600001.txt);然后,再用Java Applet從服務器端的文本文件中讀取數據。這樣,就把對服務器端數據庫的訪問轉化為對文件的I/O操作,實現的語句如下:
  URL urlc=new URL("http://127.0.0.1/"+FileName+".txt");
  BufferedReader bis=new BufferedReader(new InputStreamReader(urlc.openStream()));
    注:第一條語句中的http://127.0.0.1/為在本機執行調試操作的URL地址,在上傳到服務器上后要做相應的修改;FileName為要讀取的文本文件名。
  第二條語句定義了讀取輸入數據流的方法。
    四、監聽鍵盤及鼠標事件
    在Java Applet小程序中,單擊按鈕、鍵入文本、使用鼠標或執行任何與界面相關的動作時,就發生一個事件,小程序就會作出適當的反應。
    在本例中,我們通過使用action()方法來獲得Java Applet小程序運行時所發生的事件。語句格式如下:
    public boolean action(Event evt,Object arg)
  {
  FileName=text1.getText(); //提取文本框中輸入的參數
  ReadData();  //調用讀數據流數據的方法
  return true; //處理完畢,不需要其他方法再做處理
  }
    上面的action()方法中含有兩個參數:一個是Event類的一個對象evt;另一個是Object類的一個對象arg。Event對象告訴我們發生了哪種事件,而Object對象將進一步告訴我們有關該事件的情況。每當有Event監聽的事件發生時,Java Applet便自動調用該action()方法。
    至此,在把握了上述編程中的一些要點后,我們便可以成功地編制出一個完整的繪制K線的Java Applet小程序了(完整的源代碼下載)。
    五、編制Html文檔(Stock.html)
    程序編制完成后,另外要做的是設置在Web頁面上調用Java Applet的頁面,即編制HTML文檔。Stock.html文檔的示例代碼如下:
  
  < HEAD >
  < TITLE >股票K線圖< /TITLE >
  < /HEAD >
  
  
  
  < /body >
  < /HTML >
    在< APPLET >< /APPLET >標簽對內,是對Java Applet小程序的調用代碼。其中的StockApplet.class是經編譯后生成的class文件,codeBase指向的是class文件所存放的路徑。假如class文件與HTML文檔存放在同一目錄下,則可以省略這一項。
    至此,編制Java Applet小程序的工作便全部完成。
    在個人計算機上進行調試時,首先要安裝個人Web服務,然后,把StockApplet.class與HTML文檔一起拷貝到本機的WWW服務目錄下(如:C:/Inetpub/wwwroot/),打開瀏覽器,在地址欄內輸入http://127.0.0.1/Stock.html,回車,進行測試操作。
    調試通過后,便可上傳至服務器投入運行了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品视频播放| 日韩高清有码在线| 91精品国产综合久久香蕉的用户体验| 午夜剧场成人观在线视频免费观看| 国产精品久久久久高潮| 精品电影在线观看| 亚洲国产另类 国产精品国产免费| 欧洲s码亚洲m码精品一区| 久热精品视频在线免费观看| 亚洲午夜小视频| 亚洲精品国产精品乱码不99按摩| 国产人妖伪娘一区91| 国产精品精品久久久| 色综久久综合桃花网| 精品免费在线观看| 国产精品久久久久国产a级| 精品一区二区三区三区| 精品国产一区二区三区四区在线观看| 国产精品国内视频| 欧美国产乱视频| 日韩免费av在线| 亚洲激情视频在线观看| 欧美最近摘花xxxx摘花| 亚洲第一区中文99精品| 亚洲人成网在线播放| 伊人久久久久久久久久久久久| 国产精品观看在线亚洲人成网| 欧美一级成年大片在线观看| 久久久www成人免费精品张筱雨| 中文国产亚洲喷潮| 九九精品在线播放| 国产精品小说在线| 亚洲最大福利视频网站| 亚洲国产高清自拍| 久久不射电影网| 亚洲大胆人体在线| 久久久久久久久久久久久久久久久久av| 777国产偷窥盗摄精品视频| 国产精品视频大全| 国产精品一区二区电影| 亚洲老司机av| 久久精品国产96久久久香蕉| 91亚洲午夜在线| 日韩综合视频在线观看| 亚洲第一页在线| 在线精品视频视频中文字幕| 91在线中文字幕| 日韩亚洲精品电影| 久久91超碰青草是什么| 久久91精品国产| 欧美午夜激情小视频| 日韩电影免费在线观看| 欧美又大粗又爽又黄大片视频| 久久久久久久久久久亚洲| 亚洲专区国产精品| 午夜精品一区二区三区在线视| 国产免费一区二区三区香蕉精| 国产91色在线| 亚洲三级黄色在线观看| 久久精品电影网| 精品视频—区二区三区免费| 国产精品激情自拍| 国产精品视频自在线| 精品久久久国产精品999| 伊人男人综合视频网| 精品丝袜一区二区三区| 日韩美女av在线免费观看| 国产精品久久久久久久午夜| 久久精品青青大伊人av| 久久久国产精品免费| 亚洲一区二区三区在线免费观看| 国产精品久久久久久久久久ktv| 成人黄色片在线| 日韩成人中文电影| 日韩中文字幕在线| 亚洲免费高清视频| 丁香五六月婷婷久久激情| 欧美精品激情在线观看| 中文字幕日韩免费视频| 日韩成人av网址| 成人有码视频在线播放| 成人激情视频在线播放| 久热精品视频在线观看一区| 17婷婷久久www| 国产啪精品视频| 欧美成年人视频网站欧美| 欧美激情伊人电影| 国产a∨精品一区二区三区不卡| 欧美xxxx做受欧美| 久久久久久成人精品| 久久视频在线免费观看| 成人午夜在线观看| 亚洲黄色www| 国产在线一区二区三区| 狠狠色狠狠色综合日日五| 亚洲欧美中文日韩在线v日本| 亚洲国产成人精品电影| 成人国产在线视频| 黄网动漫久久久| 搡老女人一区二区三区视频tv| 日韩电影免费观看中文字幕| 欧美性videos高清精品| 国产精品久久9| 国产一区二区三区视频| 久久6精品影院| 亚洲丝袜在线视频| 45www国产精品网站| 亚洲综合精品伊人久久| 亚洲欧美精品一区二区| 久久99精品久久久久久琪琪| 国产成人鲁鲁免费视频a| 美女视频黄免费的亚洲男人天堂| 欧美日韩性生活视频| 在线看日韩欧美| 久久久久亚洲精品| 国产乱肥老妇国产一区二| 欧美激情一区二区三区在线视频观看| 欧美午夜xxx| 日韩欧美在线国产| 亚洲国产女人aaa毛片在线| 亚洲加勒比久久88色综合| 亚洲精品成人久久电影| 日韩高清电影好看的电视剧电影| 亚洲精选在线观看| 精品人伦一区二区三区蜜桃网站| 欧美日本精品在线| 欧美黑人性视频| 成人激情视频在线播放| 亚洲第一色中文字幕| 川上优av一区二区线观看| 欧美一级视频免费在线观看| 国产精品国产自产拍高清av水多| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲3p在线观看| 成人网页在线免费观看| 欧美国产乱视频| 国产欧美日韩中文字幕在线| 97超碰色婷婷| 精品视频中文字幕| 日本人成精品视频在线| 日韩欧美国产网站| 国产一区二区三区日韩欧美| 精品国产1区2区| 欧美成人精品h版在线观看| 亚洲精品小视频在线观看| 88xx成人精品| 日本精品免费观看| 亚洲电影成人av99爱色| 久久人人97超碰精品888| 国产精品综合网站| 91精品在线影院| 国产色视频一区| 国产午夜精品麻豆| 精品香蕉在线观看视频一| 国产精品69久久| 亚洲欧美精品suv| 日韩av电影在线免费播放| 欧美日韩免费观看中文| 国产视频久久久久久久| 国产ts一区二区| 欧美在线www| 亚洲电影免费观看高清完整版在线观看| 日韩av中文字幕在线播放| www.日韩系列|