首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java Applet 繪製 K 線圖完整教學:從多執行緒到資料串流處理

     編輯:Java 相關知識

前言

K 線圖是股市技術分析的核心工具,透過開高低收價格與成交量繪製,輔以均線即可呈現股價走勢。本文詳細說明如何使用 Java Applet 於網頁繪製即時 K 線圖,涵蓋多執行緒、版面配置、資料串流、事件監聽四大關鍵技術。

核心技術課題與解決方案

一、多執行緒架構 - 解決閃爍與效能問題

Applet 生命週期包含 init()、start()、stop()、destroy() 四階段。繪製 K 線圖時,需同時處理:

  • 靜態元素:K 線矩形、成交量長條、座標軸、標籤
  • 動態元素:隨滑鼠移動的十字游標與即時價格標示

為避免全畫面重繪造成閃爍,採用雙執行緒策略:

  • 主執行緒:負責初始化、資料載入、靜態圖形繪製
  • 子執行緒 (M_pointThread):專責十字游標繪製,採用 XOR 模式 (setXORMode(Color.white)) 實現無痕移動
public void start() {
    if (M_pointThread == null) {
        M_pointThread = new Thread(this);
        M_pointThread.start();
    }
}

public void run() {
    M_graphics = getGraphics();
    M_graphics.setXORMode(Color.white);
    while (true) {
        if (MouseMove) {
            // 擦除舊游標
            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 = false;
            x0 = X; y0 = Y;
        }
        try { Thread.sleep(50); } catch (Exception e) {}
    }
}

二、版面配置管理 - 絕對定位策略

Applet 需顯示股票代碼輸入框、價格標籤、成交量標籤等 UI 元件。Java 提供 BorderLayout、FlowLayout、GridLayout、CardLayout 等配置管理器,但本案例採用無配置管理器 (null layout),透過 setLayout(null) 並使用 reshape(x, y, width, height) 精確控制元件位置與大小,適合固定尺寸的金融圖表介面。

三、資料輸入輸出串流 - 伺服器端資料獲取

Applet 運行於客戶端,需從伺服器讀取股票資料。採用文字檔中介策略:

  1. 伺服器端將資料庫 (如 show128.dbf) 轉存為文字檔 (600001.txt),格式:第一行股票名稱,後續各行含日期、開高低收、成交量
  2. Applet 透過 URL 與 BufferedReader 讀取遠端文字檔
URL urlc = new URL("https://server/" + FileName + ".txt");
BufferedReader bis = new BufferedReader(new InputStreamReader(urlc.openStream()));

四、鍵盤滑鼠事件監聽

  • 鍵盤/按鈕事件:覆寫 action(Event evt, Object arg),處理輸入框送出、按鈕點擊
  • 滑鼠移動事件:於 mouseMove() 中更新座標並觸發游標重繪

HTML 整合與部署

<APPLET code="StockApplet.class" name="StockApplet" HEIGHT=500 WIDTH=400>
</APPLET>

測試時需架設個人 Web Server (如 IIS),將 .class 與 HTML 放入 wwwroot,以 https://127.0.0.1/Stock.html 存取。

總結

本文完整展示了 Java Applet 開發金融圖表的核心技術棧。雖然現代 Web 開發已轉向 HTML5 Canvas/WebSocket,但此架構中的多執行緒繪圖、資料串流處理、事件驅動設計思維,對於理解即時圖表系統仍具參考價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved