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

Java Swing 實戰:從零打造互動式日曆元件

     編輯:Java 相關知識

專案概覽

本文展示一個基於 Java Swing 的桌面日曆程式,支援年份/月份下拉選擇、今日快速跳轉、日期點選顯示等功能。完整原始碼採用事件驅動架構,適合初學者理解 GUI 程式設計流程。

核心類別結構

public class CalenderTrain extends JFrame implements ActionListener {
    // UI 元件
    JComboBox Month, Year;           // 年月下拉選單
    JLabel Year_l, Month_l;          // 標籤
    JButton[] button_day = new JButton[49]; // 日期按鈕陣列(7x7 格)
    JButton button_ok, button_today; // 確定/今日按鈕
    JPanel pane_ym, pane_day, pane_parent; // 版面面板
    
    // 狀態變數
    Date now_date = new Date();
    int now_year, now_month;
    boolean bool = false;            // 是否顯示今日
    String year_int; int month_int;  // 使用者選擇的年月
}

關鍵功能實作

1. 初始化與版面配置

  • 年份範圍:當前年份前 10 年 ~ 後 20 年
  • 月份:1~12 月
  • 採用 BorderLayout 分割北部(年月控制列)與南部(日期網格)
  • 日期區使用 GridLayout(7,7,10,10),前 7 格固定顯示星期標題

2. 日期渲染邏輯 setDay()

核心演算法步驟:

  1. 根據年月建立 GregorianCalendar 實例
  2. 計算該月 1 號為星期幾(dt.getDay())
  3. 判斷月份天數(含閏年二月邏輯)
  4. 從對應起始位置填入日期數字,其餘按鈕清空
  5. 當日以藍字標示,週末紅字,平日黑字

3. 事件處理

  • 確定按鈕:讀取下拉選單年月,重繪日曆
  • 今日按鈕:重置為系統當前年月並重繪

程式碼優化建議

  1. 使用 java.time 套件(Java 8+)取代已棄用的 Date/Calendar
  2. 將日期渲染邏輯獨立為 CalendarModel 類別,符合 MVC 模式
  3. 加入鍵盤導航支援(左右鍵切月、上下鍵切年)
  4. 日期按鈕加入 ToolTip 顯示農曆/節氣資訊

完整原始碼下載

完整可執行原始碼請見文末附件,可直接於 IDE 執行 main 方法啟動視窗。

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