六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用Java繪制K線 (轉)

[摘要]用Java繪制K線 黑龍江省牡丹江王哲 ---- Java語言中的Applet(Java小程序)和Application(Java應用程序)是在結構和功能上都存在很大差異的兩種不同的編程方式。Applet應用于Web頁上,可做出多姿多彩的頁面特效,給網站增輝添色;Application則與其他編程...
用Java繪制K線

黑龍江省牡丹江王哲
---- 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/temp
/"+FileName+".txt");
BufferedReader
bis=new BufferedReader
(new InputStreamReader(urlc.openStream()));

---- 注:第一條語句中的http://127.0.0.1/temp/ 為在本機執行調試操作的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文檔的示例代碼如下:

< HTML >< HEAD >< TITLE >股票K線圖< /TITLE >< /HEAD >
< body bgcolor=#00ffff >
< APPLET
code=StockApplet.class codeBase=C:\javatemp\Project1\
name=StockApplet
style="FONT-FAMILY: sans-serif;
HEIGHT: 410px; WIDTH: 610px">
< /APPLET >
< /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,回車,進行測試操作(注意:此時要在Stock.html文檔中刪除codeBase一項,否則會產生class文件未找到的錯誤)。

---- 調試通過后,便可上傳至服務器投入運行了。 


主站蜘蛛池模板: 婷婷激情狠狠综合五月 | 色综合色狠狠天天综合色hd | 综合激情五月婷婷 | 色欧美片视频在线观看 | 日韩a在线| 欧美一级久久久久久久大片 | 日本特黄aaaaaaa大片 | 日本欧美高清 | 五月亭亭六月丁香 | 欲香欲色 | 日韩系列 | 天天综合天天操 | 四虎精品永久免费 | 四虎永久在线观看视频精品 | 中文一区在线 | 亚洲 欧美 日韩在线综合福利 | 探花 在线| 日韩在线视频观看 | 亚洲免费成人网 | 天天躁夜夜躁很很躁 | 啪啪免费视频网站 | 中文字幕免费高清视频 | 亚洲国产精品久久久久 | 日韩欧美在线视频观看 | 日日夜夜国产 | 日韩中文字幕视频在线 | 一级女性全黄久久生活片 | 在线亚洲日产一区二区 | 亚洲天堂2014 | 青青草国产 | 深夜国产福利 | 日日干夜夜欢 | 亚洲欧美日韩在线观看二区 | 午夜视频导航 | 天堂√在线官网 | 五月激情丁香 | 中文字幕在线免费观看 | 在线视频你懂的国产福利 | 四虎在线视频免费观看 | 午夜视频在线免费观看 | 日韩精选视频 |