日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Swing容器組件的顯示效果

其實(shí)有很多用戶界面效果在Swing中是相當(dāng)容易實(shí)現(xiàn)的。前面曾談到過淡入淡出式彈出Swing Popup窗口,其實(shí)對(duì)于任何Swing容器組件而言都可以實(shí)現(xiàn)這一功能。使用Renderer渲染機(jī)制,在容器的paint方法中設(shè)置圖形對(duì)象的透明屬性,就可以實(shí)現(xiàn)Swing容器組件自身和子組件的透明渲染。如果再將這個(gè)過程漸變化,就能實(shí)現(xiàn)容器顯示淡入淡出效果。

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)提供從項(xiàng)目策劃、軟件開發(fā),軟件安全維護(hù)、網(wǎng)站優(yōu)化(SEO)、網(wǎng)站分析、效果評(píng)估等整套的建站服務(wù),主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),成都APP應(yīng)用開發(fā)以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。創(chuàng)新互聯(lián)深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

本文的演示使用下面幾行代碼就實(shí)現(xiàn)了容器顯示的淡入淡出效果:

 
 
 
  1. /**  
  2.  * 淡入淡出式顯示內(nèi)容組件的容器  
  3.  * @author William Chen  
  4.  */  
  5. public class GlassBox extends JComponent implements ActionListener{  
  6.     //常數(shù)定義  
  7.     private static final int ANIMATION_FRAMES=50;  
  8.     private static final int ANIMATION_INTERVAL=10;  
  9.     //幀索引  
  10.     private int frameIndex;  
  11.     //時(shí)鐘  
  12.     private Timer timer;  
  13.      
  14.     /** Creates a new instance of GlassBox */  
  15.     public GlassBox() {  
  16.     }  
  17.      
  18.     public void paint(Graphics g){  
  19.         if(isAnimating()){  
  20.             //根據(jù)當(dāng)前幀顯示當(dāng)前透明度的內(nèi)容組件  
  21.             float alpha=(float)frameIndex/(float)ANIMATION_FRAMES;  
  22.             Graphics2D g2d=(Graphics2D)g;  
  23.             g2d.setComposite(AlphaComposite.getInstance
    (AlphaComposite.SRC_OVER, alpha));  
  24.             //Renderer渲染機(jī)制  
  25.             super.paint(g2d);  
  26.         }else{  
  27.             //如果是***次,啟動(dòng)動(dòng)畫時(shí)鐘  
  28.             frameIndex=0;  
  29.             timer=new Timer(ANIMATION_INTERVAL, this);  
  30.             timer.start();  
  31.         }  
  32.     }  
  33.     //判斷當(dāng)前是否正在進(jìn)行動(dòng)畫  
  34.     private boolean isAnimating(){  
  35.         return timer!=null && timer.isRunning();  
  36.     }  
  37.     //關(guān)閉時(shí)鐘,重新初始化  
  38.     private void closeTimer() {  
  39.         if(isAnimating()){  
  40.             timer.stop();  
  41.             frameIndex=0;  
  42.             timer=null;  
  43.         }  
  44.     }  
  45.     //動(dòng)畫時(shí)鐘處理事件  
  46.     public void actionPerformed(ActionEvent e) {  
  47.         //前進(jìn)一幀  
  48.         frameIndex++;  
  49.         if(frameIndex>=ANIMATION_FRAMES)  
  50.             //***一幀,關(guān)閉動(dòng)畫  
  51.             closeTimer();  
  52.         else//更新當(dāng)前一幀  
  53.             repaint();  
  54.     }  
  55. }  

將GlassBox類作為JFrame的ContentPane就能實(shí)現(xiàn)窗口內(nèi)容顯示的淡入淡出效果。GlassBox更常見的使用方式是作為普通容器,放在應(yīng)用程序的任何地方。本文附帶的演示程序是將GlassBox是作為普通容器加入JFrame的ContentPane內(nèi)的。

Swing靈活強(qiáng)大的擴(kuò)展和自定義功能得益于其優(yōu)秀的模型和架構(gòu)設(shè)計(jì)。如果程序是僅局限于用幾個(gè)Label和Button等堆砌起來的簡(jiǎn)單應(yīng)用,你很難體會(huì)到Swing容器組件的優(yōu)點(diǎn),反而會(huì)因?yàn)樗撵`活復(fù)雜覺得它不如SWT等編寫簡(jiǎn)單。然而在你面對(duì)現(xiàn)實(shí)應(yīng)用中的復(fù)雜、靈活多變的界面需求時(shí),Swing的能力就逐步顯現(xiàn)了出來了。


當(dāng)前標(biāo)題:Swing容器組件的顯示效果
分享鏈接:http://www.5511xx.com/article/cooeogg.html