国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

用Java繪制K線

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

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){}

//捕捉可能出現的異常

}

二、布局治理器



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 慈溪市| 拉孜县| 建始县| 射洪县| 平罗县| 三门峡市| 老河口市| 四川省| 石渠县| 太康县| 蓬安县| 聂拉木县| 肃北| 斗六市| 镇原县| 金秀| 马龙县| 南丰县| 肥乡县| 汕尾市| 巴彦淖尔市| 阜新市| 白玉县| 喀什市| 项城市| 雷州市| 望奎县| 大冶市| 丹阳市| 洞头县| 句容市| 兰西县| 合江县| 桓台县| 庆安县| 苍梧县| 囊谦县| 和龙市| 芜湖市| 鄢陵县| 宣武区|