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

即時查找 GUI 程式:VLookup 實作與自動完成功能解析

     編輯:Java 相關知識

需求背景

最佳的查找體驗是:程式常駐運行,需要時切換視窗,輸入關鍵字即可即時看到結果。本文實作一個 Applet/Application 雙模式的郵件查找工具 VLookup,具備**姓氏自動完成**功能——輸入部分字元即自動匹配資料庫中首筆符合記錄,大幅提升輸入效率。

核心架構

  • UI 元件:TextField 輸入、Label 顯示自動完成建議、TextArea 顯示查詢結果。
  • 資料庫連線:採用 JDBC-ODBC Bridge 連接 people.csv,初始化於 init()。
  • 事件驅動:TextListener 監聽 TextField 內容變化,觸發即時查詢。

關鍵程式碼解析

1. 自動完成邏輯

// 1. 模糊查詢匹配的姓氏
r = s.executeQuery(
    "SELECT LAST FROM people.csv people " +
    "WHERE (LAST Like '" + searchFor.getText() + "%') ORDER BY LAST"
);
if (r.next()) completion.setText(r.getString("last"));

// 2. 精確查詢該姓氏下的詳細記錄
r = s.executeQuery(
    "SELECT FIRST, LAST, EMAIL FROM people.csv people " +
    "WHERE (LAST='" + completion.getText() + "') AND (EMAIL Is Not Null) " +
    "ORDER BY FIRST"
);

用戶只需輸入足夠字元以唯一確定一筆記錄,即可停止輸入。

2. 雙模式啟動

public static void main(String[] args) {
    VLookup applet = new VLookup();
    Frame frame = new Frame("Email lookup");
    frame.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) { System.exit(0); }
    });
    frame.add(applet, BorderLayout.CENTER);
    frame.setSize(500, 200);
    applet.init();
    applet.start();
    frame.setVisible(true);
}

技術亮點

  • 即時反饋:TextListener 實現逐字符觸發查詢,無需按鈕確認。
  • 智能建議:LIKE 'prefix%' 實現前綴匹配,首筆結果作為自動完成提示。
  • 雙模式部署**:同一類別同時支援 Applet 嵌入網頁與獨立桌面應用。

安全性與改進建議

現存風險:SQL 字串拼接存在注入隱患。
改進方向:

  1. 改用 PreparedStatement 參數化查詢。
  2. 遷移至現代 JDBC 驅動(如 H2、SQLite、MySQL),淘汰 JDBC-ODBC Bridge。
  3. 引入連線池(HikariCP)提升併發效能。
  4. 前端改用 Swing/JavaFX/Web 技術,提供更豐富交互體驗。

結語

VLookup 展示了「即時搜尋 + 自動完成」的經典交互模式。雖技術棧屬早期 Java(AWT/JDBC-ODBC),但其核心交互邏輯仍具參考價值,適用於現代框架下的類似需求實作。

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