最近幾天閒着沒事,練習了一下。編寫了一個模仿QQ的界面,主要是練習Swing。呵呵,基本上使用到了我博客前面講的各種技術,在這裏跟大家分享了。我們先來看看主界面:
左邊的界面是用Swing編寫的,右邊的QQ的原界面,大致的界面已經很像了但qq的按鈕的確很難做試了幾種方法但效果都不好。還有就是QQ的發光文字用Swing挺難實現的,界面並沒有細化。像搜索欄可以再加上一層漸變,聯繫人列表中的熱度和羣很簡單這裏就不實現了。
先來看看菜單按鈕的實現:
第一種狀態:
第二種狀態:
這裏使用了兩個圖片:和
來看看按鈕的代碼:
對於按鈕我們也進行了封裝:
在鼠標懸停在按鈕上時按鈕就會發光。
接下來看看這個按鈕,在按鈕的邊緣使用了黑色邊緣調整了透明度,再用一個白色的邊框表現出高光。中間使用了線性漸變。
我們再來看看發光的文字是怎麼實現的例如這樣的效果,就是調用以下方法實現的。
好友列表的實現很簡單,使用JTree來實現的。有人要問這樣的效果是怎樣實現的,其實也不難主要是利用了樹的樣式將樹平行化
至於圓角界面的實現大家可以看我以前寫的博客,裏邊有介紹圓角界面的實現,還有靠邊自動停靠等內容。爲了實現顏色變換界面底層使用了單一的顏色。而上邊的組件都是透明的,實現換色就很簡單了,如果要換膚功能,也只需要在界面上多花一層透明的圖片就可以了。
下面是聊天窗口:
上面的界面是Swing的,下面的是QQ的,效果已經很接近了。按鈕部分沒有做調整,大家可以自己發揮。聊天窗口製作很簡單主要是窗口的佈局比較麻煩左邊的分割區用到了JSplitPane是下面的部分可以上下拖動。
來看看分割部分的代碼:
分割高度不能設置爲0不然鼠標會找不到焦點。
然後是基本設置界面:
上面的界面是Swing的,下面的是QQ的,面板右邊的區域製作很簡單只需要加載一個CardLayout就可以了我在這裏就不實現了,左邊的面板使用了一個自己編寫的組件,呵呵!自我覺得還挺像的,來看看代碼吧!
大致的QQ界面已經能實現的八九成了,如果大家有什麼問題可以給我留言。
如果對java界面方面有興趣的朋友歡迎加入4601398QQ羣。