季 靜 周志強 程 姝 王森龍
(安徽省標準化研究院 信息中心,安徽 合肥 230051)
Swing是Java應用程序用戶界面開發(fā)包,是一個用于開發(fā)Java應用程序用戶界面的開發(fā)工具包。它以抽象窗口工具包(AWT)為基礎使跨平臺應用程序可以使用任何可插拔的外觀風格。Swing開發(fā)人員只需要用很少的代碼就可以利用Swing豐富、靈活的功能和模塊化組件來創(chuàng)建優(yōu)雅的用戶界面[4-5]。
制作基礎水平軸線時關注的是,在畫出刻度時,一定的寬度下,該圖表可以畫多少個刻度格。如圖1所示。
圖1 刻度格示意圖
該步驟總共分為六步:
(1)確定一個典型標志格式的抽象寬度,如圖2所示。模式“mm/dd/yy”是經(jīng)典模型,因此本文使用它來計算標尺刻度的寬度。
(2)確定最大計數(shù)的標注將顯示在水平軸。
(3)設定變量hPoints以存儲臨時的標尺刻度樣本。
(4)使間隔為6/12/3的整數(shù)倍,所以每一個標尺刻度在水平軸顯示出來都是“整數(shù)”刻度。 (3:00,3:30,4:00…)如圖 3 所示。
(5)找到第一個明顯的“整數(shù)”索引(例如 刻度“03/11/2007 00:00”在日顯示模式下,“03:00”是小時視圖)如圖 4 所示。
(6)畫出每個步驟的標記并且遍歷所有的標記,如圖5所示。
圖2 確定抽象寬度
圖3 顯示整數(shù)刻度
圖4 尋找第一個整數(shù)索引
這里主要包含兩部分:在背景下“緩存”和設置全局“Cache”。
1.2.1 在背景下“緩存”
當用戶放大數(shù)據(jù)圖表來查看詳細的數(shù)據(jù)時,可以在新的時間范圍條件下過慮出舊的點,并立刻刷新圖表來顯示,并不用從服務器加載數(shù)據(jù),因此,效果非常好。
(1)緩存舊的數(shù)據(jù);
(2)定義存儲來保存被過慮過的數(shù)據(jù);
(3)遍歷和過濾緩存的數(shù)據(jù);
(4)重置圖表的數(shù)據(jù)源;
(5)對圖表進行刷新。
1.2.2 定義全局“Cache”
當滾動滑塊器的跨度的時候,由于所有的數(shù)據(jù)是歷史記錄,所以當保持數(shù)據(jù)的最長時間期限時,可以重復使用。
(1)定義一個參數(shù)記錄的最長時間戳。
(2)緩存最大時間段的數(shù)據(jù)源并且記錄開始和結束時間戳。
圖5 記錄開始與結束的時間戳
(3)當所選的時間在最大的范圍內(滑塊面板上的突出的時間范圍),重新使用這些數(shù)據(jù)。
圖6 數(shù)據(jù)重用
滑塊將會以月為單位顯示出讓用戶可以查看和自由選擇的一個很大的范圍。在初始化時,起點和終點(一段時間)已經(jīng)被指定,所以它將計算在這一時間段內都包含哪些月份和這些月份里一共包含的天數(shù)。但是開始的日期也許不是一個月的第一天,需要得到起始時間附近的第一天的日期(mm/1/yy)。如果得到水平軸上的第一個數(shù)值范圍的偏移,之后的事情就很容易了。如圖7所示。
圖7 滑塊及其窗格
(1)確定這個時間段的比率和滑塊的寬度;
(2)確定第一個月的標記;
(3)確定第一個數(shù)值范圍的偏移量;
(4)確定每個月的每一步(天)。
此刻,通過指定的時間段的循環(huán)時間戳,可以得出滑塊及其尺度。
時延圖表在現(xiàn)實生活中應用非常廣泛,以火車票訂票系統(tǒng)為例,火車票網(wǎng)上訂票系統(tǒng)提供火車票查詢、網(wǎng)上訂票、鐵路知識和新聞公告、貨運信息查詢等等功能。其中最為便利的就是網(wǎng)上訂票,自助取票,讓自己的全程都有完整的計劃安排。
支撐訂票系統(tǒng)的一大功能就是時延圖表。眾所周知,大部分火車票是提前20天起售,也就是本月1號可以買20日的票,2號可以買21日的票以此類推,正常情況下一直都是可點選自今日起,20日內的車票,這就形成了一個動態(tài)的延時圖表,如何保證系統(tǒng)能夠順延下面的日期,這就需要上述圖表的支持。當特殊情況出現(xiàn)例如節(jié)假日前加車次,只需在后臺修改滑動窗口的大小,就能輕松控制車票起售及截止時間,十分方便。
隨著計算機系統(tǒng)的普及,未來一定會有更多的便民系統(tǒng)應用推出,為人們的生活提供便利。
[1]朱楊清.Excel2002幾個特殊圖表的制作及技巧[J].電腦學習,2003(5):46-47.
[2]宋莉.Excel繪制3Y軸圖表的制作方法[J].大連民族學院學報,2007(5):153.
[3]任斌.用Visio簡化《電子技術》課件中圖表的制作[J].華北航天工業(yè)學院學報,2006(16):85-86.
[4]蘇碧霞.探析JAVA Swing工具包在圖形用戶界面設計中的應用[J].信息與電腦(理論版),2013(5):143-144.
[5]張海越,范曦.使用Java Swing組件進行事件處理方法的分析與比較[J].軟件導刊,2013,12(6):26-27.