本文展示一個基於 Java Swing 的「風景名勝查詢系統」完整原始碼範例。系統包含使用者登入驗證與主查詢視窗兩大核心模組,示範了 Swing 元件佈局、事件處理、JDBC 資料庫連線以及多視窗切換等實用技巧。
Login 類別繼承 JFrame 並實作 ActionListener,建立包含使用者名稱、密碼、驗證碼輸入欄位的登入介面。版面採用 GridLayout(6,1) 垂直堆疊六個面板,分別放置標題、帳號、密碼、驗證碼圖片按鈕、功能按鈕(確定、註冊、退出)與空白填充區。
驗證碼圖片透過 ImageIcon 載入本地路徑 E:\\U盤文件\\100PHOTO.jpeg,實務上建議改為類別路徑資源以利部署。按鈕事件在 actionPerformed 統一處理:
wulei 資料庫,查詢 stuinf 資料表逐筆比對帳號密碼。若比對成功顯示「登入成功」並開啟 LandScape 主視窗;失敗或例外時同樣開啟主視窗(原碼邏輯為測試用)。dispose() 關閉視窗。資源關閉於 finally 區塊逐一釋放 ResultSet、Statement、Connection,符合基本資源管理原則。
LandScape 類別同樣繼承 JFrame 實作 ActionListener。視窗分為上下兩大區塊:
GridLayout(3,1) 包含標題列、查詢條件列(省市名、旅行月份、旺淡季提示)、景點資訊列(景點名、門票單價、價格浮動說明)。JTextArea 顯示詳細資訊;右側 GridLayout(6,2) 排列旅客類型單選鈕(老人、學生、小孩、成人)與對應人數輸入框,以及「提交」、「退出」按鈕。目前 actionPerformed 為空實作,需依業務補充查詢、試算邏輯。
PreparedStatement 取代字串拼接,防止 SQL Injection。SwingWorker),避免阻塞 EDT 導致介面凍結。setDefaultCloseOperation 明確控制程式結束邏輯。package 風景名勝查詢系統;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
class Login extends JFrame implements ActionListener { ... }
public class LandScape extends JFrame implements ActionListener { ... }
啟動入口為 LandScape.main() → new Login(),適合作為 Swing 入門教學與快速原型開發參考。