


摘要:Java Swing組件是早期AWT組件的升級版本,但也不能替代AWT,早期在java的GUl設計中,AWT未能達成跨平臺卻有統一風格的界面設計。Swing由Java語言編寫而成,而lava語言本身不受操作系統影響,因此被稱為輕量級組件,可以在不同的平臺上達成統一的界面效果。Swing包的JComponent類繼承了awt包的Container類,所以大多組件都和容器相聯系,比如JFrame、JDialog、JPanel,這些類對象都需要轉換成容器,從而容納其他組件。該文從JFrame窗體人手,對容器極其相關設置做出分析。
關鍵詞:swing; awt; JFrame; JPanel; getContentPane0
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)21-0160-02
開放科學(資源服務)標識碼(OSID):
1 為Jframe對話框添加背景色
創建繼承Jframe的test類,在該類構造函數中,初始化窗體的背景色。由于Jframe只是一個窗體框架,并不構成一個容器,因此首先創建Container類變量,再調用getContentPane0將該類轉換成容器,通常在構造函數中初始化容器,可以使用Container c=getContentPane0來完成。然后用該容器變量調用setBackground(Color.orange),設置窗體背景為橘色,在這里如果未設置容器,比如直接使用this.getContentPane0,就無法將顏色添加至窗體。接著設置窗體大小和可見性,直接調用父類方法java awt.component.setSize(int, int), java awt.component.setVisible(true)。最后在主函數中創建該類實例即可。代碼如圖1:
2 為Jframe窗體添加背景圖
實現該功能可通過將圖片裝載在JPanel面板上,然后在jframe容器中添加該jpanel面板。因為JPanel默認僅設置背景顏色,無法設置圖片背景,所以通過重寫該類paintComponent(Graphics g)方法,使用g.drawlmage0將圖片畫人面板。
具體過程可在項目中新建兩個類:JFrame子類和JPanel子類。在JPanel子類中,該類構造函數無法給面板加載背景圖片,因此使用Image類先將圖片放人內存,在此過程中建立String類的字符串鏈接url,在寫url的時候,地址操作符使用”\\”,因為在lava中”\”表示轉義字符,如應寫成:String url=”D:\\timg.jpg”。再通過Toolkit.getDefaultToolkitO.getlmage(url)獲取本地磁盤的圖片,Toolkit定義的部分方法可直接查詢本地操作系統。該方法組合可使用string類作為參數,在此返回Image類對象。最后重寫JPanel類的paintComponent(Graphics g)方法,先調用父類paintComponent0,實現大部分背景設置功能,然后再加入添加背景圖片的功能,添加背景前,先獲取圖片寬度和高度,這兩個值使用intimh=im.getHeight(this)和intimw=im.get-Width(this)來實現,注意,使用this作為參數,是指的lmage類本身,用來獲取背景圖的寬和高,作為背景圖image的兩個屬性。在這里,如果不是用this作為參數,比如使用null,都會導致無法顯示圖片。接下來調用圖形類方法drawlmage(im,0,0,null)(本例代碼),可以調整第2和第3個參數,來顯示圖片特定部位。代碼如圖2:
下面在JFrame的子類中將窗體設置為容器,并將前面創建的JPanel面板添加進容器中,在這里注意到Container類為頂級容器,它是置頂的,它里面可以添加二級容器,如JPanel面板,或JScrollpane。具體步驟是在該類構造函數中,使用getCon-tentPane0將該類設置為容器,然后調用setSize(int,int)設置窗體大小,再創建jPanel對象,并將其添加至該容器,然后設置窗體可見,最后在主函數中創建該類對象。代碼如圖3:
參考文獻:
[1]楊陽,基于Java Swing技術的學籍管理系統的設計與實現[Jl.福建電腦,2018(5):127-128.
[2]張會,基于Java的指法練習小游戲的設計與實現[Jl.電腦知識與技術,2017,13(32):85-86,96.
[3]潘國榮.Java Swing下文件復制的實現方法[J].電腦知識與技術,2019(33):37-38.
[4]陳硯雄.Java中Swing事件模型的應用[J].文教資料,2005(21):36-37.
[5]張會.基于Java的記事本程序的設計與實現.電腦知識與技術,2017(30):88-90.
[6]王素蘋,一種基于Java Swing的網絡聊天室的設計與實現[J].現代計算機(專業版),2012(7):64-67.
[7]陳子豪.Java Swing下計算器的設計與實王見[J].科技創新導報,2017,14(32):111-112.
【通聯編輯:王力】
作者簡介:張丹丹(1981-),女,江蘇常州人,實驗師,工程碩士。