用Swing作一個日曆控製程序

來源:互聯網
上載者:User
日期是最基本的資料形式之一,因此很多語言或者資料庫都提供了對日期的支援,或內建或提供這一類的庫。Java也不例外;Java的應用編程介面提供了以跨平台獨立語言的方式描述,計算,對比,顯示以及攜帶型分析日期。在這篇文章裡,我要講講關於Swing的自訂控制,允許你在視覺上擷取時間資訊而不是用敲命令的方式。用這種方法,你可以避免無效的時間資訊,讓你的使用者以視覺的方式得到享受。
Java中的日期

Java描述日期和時間的方法使用傳統的Date命令或者Java的一些子庫。不管它的名字是什麼,日期的類並沒有普通意義上的日期的概念(日,月,年等等)技術上講,它僅僅是從1970年1月1日 00:00:00 GMT開始百萬分之一秒的累加的一個結果。儘管這些關於日期的類有各種各樣的處理日期的方法,這都是不夠的。

為了方便的解決日期問題, JDK 1.1 介紹了一個抽象的類java.util.Calendar。具體的計算日期的子類都會根據日曆系統使用一個指向特定日期的指標。這是因為日曆系統曆來就是有很多種方法來計算自己的日期(比如陽曆,羅馬曆,陰曆)。

Java應用編程介面提供了名為java.util.GregorianCalendar的類來根據陽曆系統處理日期資訊。

最終,名為java.text.DateFormat的類就是一種抽象的處理格式解釋日期種類的獨立於語言之外的方式。這種方式依靠那些慣例,法則,以及已知的語言要求的位置運行著。名為DateFormat的具體的子類進行實際的工作。例如,名為java.text.SimpleDateFormat的子類允許你根據現有的方式分析或者設定一個日期的格式。

總體來說,這三個最基本的類(Date, Calendar, 以及 DateFormat)提供了強大的靈活的處理日期的體系。也許開始看來會有些疑惑,但你一旦明白了,你就會看到這樣的結構是十分有意義的,並且在其背後有很強的邏輯背景。(看看JDK的API文檔,你就會得到根多的文檔和例子)

定做的日期控制

儘管,Java提供了你可以對日期資料操作的方法,如果讓你處理三個不同的類,看起來也有些麻煩。有時你需要使用很多方法,利用很多實體來完成一個簡單的任務。除那些之外,Swing並不能提供進入日期的組件。當然,如果使用標準的控制如text box也不難完成。不過,日期在應用中是如此的常見,以至於我們常常一遍一遍地寫相同的代碼,輸入,分析,檢查時間。

基於以上幾點原因考慮,我建立了一個簡單的自訂的控制,你可以使用它來訪問日期資料。基本上說,這就是一個顯示日期的標準的按鈕 (請看錶格A)。

表格 A

自訂日期控制

當你點擊之後,會彈出一個日期對話方塊,並允許你選擇一個新的日期 (請看錶格B)。

點擊OK鍵完成一次更新。

表格 B

日曆對話方塊彈出

這樣做簡化了應用邏輯,因為使用者不會訪問到一個無效的日期。並且由於對話方塊看上去像一個日曆,這樣做更有利於使用者掌握星期幾這個非常有用的日期資訊。

自訂的按鍵控制在名為DateButton的類 (列表A)中描述。使用起來非常簡明—僅僅是列舉一個名為DateButton的實體,並且像載入普通的控制一樣把它加到一個方框中。

按鍵就是表示的日期的實體,執行起來就像鍵入“date”命令的反映一樣。這就意外著只要名為PropertyChangeListener的時間寄存器發生變化你就可以設定並得到時間。表格 A說明了名為 DateButton 的應用編程介面,並且 列表B是一個使用的例子。

表格 A

自訂的按鍵應用編程介面是十分簡單的。你可以利用其中的一個構造器來建立一個例子,並且正確地擷取或設定時間資訊。需要注意的是這是一個標準的按鍵,也因此它繼承了很多標準按鍵的方式,包括註冊的方式。

方法

描述

DateButton(Date)

建立一個新的名為DateButton的類,用來初始化日期。

DateButton( )

建立一個新的名為DateButton的類,用來初始化系統日期。

getDate( )

得到正確的日期值。

setDate(Date)

設定正確的日期值。

自訂按鍵控制的應用編程介面

日曆對話方塊

除了自訂一個名為DateButton的控制器之外,我們還要建立一個自訂的對話方塊,名為CalendarChooser (參照 列表 C), 你可以自由地從列表中選擇月份,年份或日子 (參照表格B)。儘管它是根據名為Datebutton控制自動顯示的,你也可以用你自己的方法來使用它。建立一個名為 CalendarChooser的類,使用一個選好的方式來運行它(參照表格B完成應用編程介面)。

表格 B

使用日曆對話方塊選擇一個日期是非常簡單的。使用一個構件器來建造一個對話方塊的實體,使用其中的一種方法來選擇日期。

方法

描述

DateChooser(Dialog, title)

建立一個新的名為DateChooser的類,並且賦予其標題和對話資訊。

DateChooser(Dialog)

建立一個新的名為DateChooser的類,並且賦予其對話資訊。

DateChooser(Frame, title)

建立一個新的名為DateChooser的類,並且賦予其架構和對話資訊。

DateChooser(Frame)

建立一個新的名為DateChooser的類,並且賦予其架構。

select(Date)

顯示一個已選好日期的對話方塊,你可以任意改變日期;返回選擇好的日期。如果你取消對話方塊則返回一個空值,並關閉對話方塊。

select( )

與上述相同,用系統日期代替選擇的日期。

日曆對話方塊應用編程介面

這個名為DateChooser的類,有些複雜。我不得不對每個月的日曆建立一個新的控制器,因為這些標準控制裡面沒有我需要的。另一方面講,這也說明了敬愛能力一個新的控制是多麼地容易,靠滑鼠和鍵盤地互動就能完成。

注意到在年份挑選清單中年份的顯示,是由名為FIRST_YEAR和 LAST_YEAR的常數預先決定的。同樣地,其它常數也決定一些對話方塊視覺方面(如顏色)的效果。稍加設計,自由地修改這些參數並不困難。

同樣地,非常重要的一點,名為DateChooser的類和名為DateButton的類都是以英式(月份和星期幾)或美式日期格式定義的。由於這些也是用常數來定義的,所以修改起來也十分簡單。如果你想修改的話,這也是完全和語言無關的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.