K 線圖是股市技術分析的核心工具,透過開高低收價格與成交量繪製,輔以均線即可呈現股價走勢。本文詳細說明如何使用 Java Applet 於網頁繪製即時 K 線圖,涵蓋多執行緒、版面配置、資料串流、事件監聽四大關鍵技術。
Applet 生命週期包含 init()、start()、stop()、destroy() 四階段。繪製 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 運行於客戶端,需從伺服器讀取股票資料。採用文字檔中介策略:
show128.dbf) 轉存為文字檔 (600001.txt),格式:第一行股票名稱,後續各行含日期、開高低收、成交量URL 與 BufferedReader 讀取遠端文字檔URL urlc = new URL("https://server/" + FileName + ".txt");
BufferedReader bis = new BufferedReader(new InputStreamReader(urlc.openStream()));
action(Event evt, Object arg),處理輸入框送出、按鈕點擊mouseMove() 中更新座標並觸發游標重繪<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,但此架構中的多執行緒繪圖、資料串流處理、事件驅動設計思維,對於理解即時圖表系統仍具參考價值。