成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Swing容器組件的顯示效果

開發 后端
本文介紹Swing容器組件的顯示效果,使用Renderer渲染機制,在容器的paint方法中設置圖形對象的透明屬性,就可以實現Swing容器組件自身和子組件的透明渲染。

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

本文的演示使用下面幾行代碼就實現了容器顯示的淡入淡出效果:

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

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

Swing靈活強大的擴展和自定義功能得益于其優秀的模型和架構設計。如果程序是僅局限于用幾個Label和Button等堆砌起來的簡單應用,你很難體會到Swing容器組件的優點,反而會因為它的靈活復雜覺得它不如SWT等編寫簡單。然而在你面對現實應用中的復雜、靈活多變的界面需求時,Swing的能力就逐步顯現了出來了。

【編輯推薦】

  1. Swing應用的數據驗證
  2. 淺談Swing和SWT比較
  3. 應該改進的Java Swing 2.0
  4. 淺析Swing Set示例
  5. Swing中的JFormattedTextField組件實例
責任編輯:佚名 來源: 中國IT實驗室
相關推薦

2009-07-10 16:29:32

Swing組件

2009-07-15 11:02:32

Swing組件

2009-07-14 17:21:42

Swing組件

2009-07-10 13:36:32

Swing容器

2012-01-17 14:29:38

JavaSwing

2009-07-10 18:06:59

JTree Swing

2009-07-17 12:54:13

2009-07-10 10:19:57

JFormattedTSwing

2009-07-15 13:06:38

Swing組件

2012-01-17 13:41:34

JavaSwing

2009-07-10 10:08:59

Spinner ModSwing組件

2009-07-14 18:05:28

輕量級Swing組件

2009-07-17 14:38:51

輕量級Swing組件

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-17 10:31:18

paint方法Swing組件

2009-07-10 14:58:13

JLabel組件JFC和Swing

2009-07-15 10:52:13

JTree組件

2009-07-10 12:30:12

Swing組件

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-10 09:38:06

Java swing組
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄片毛片在线观看 | www日本高清视频 | 欧美一级三级在线观看 | 黄视频网址 | 久久91| 国产精品99一区二区 | 欧美一区二区在线观看 | 日韩1区| 一区二区三区高清 | 中文久久 | 久久精品一区二 | 国产在线h | 国产精品网址 | 隔壁老王国产在线精品 | 欧美极品在线观看 | 在线观看成人免费视频 | 国产免费一区二区三区最新6 | 欧美在线激情 | 婷婷激情在线 | 91精品国产麻豆 | 日韩伦理一区二区 | 国产一区二区三区四区 | 色综合欧美 | 中文字幕在线精品 | 亚卅毛片| 6080yy精品一区二区三区 | 精品欧美一区免费观看α√ | 精品一区二区三区免费视频 | 成人亚洲 | 日韩视频 中文字幕 | 欧美 日韩 国产 一区 | 涩涩视频网站在线观看 | 人碰人操| 成人在线观看中文字幕 | 日韩一区二区三区av | 国产伦精品一区二区三区高清 | 91麻豆精品一区二区三区 | 久久亚洲一区 | 国产精品久久精品 | 毛片1 | 国产精品久久久久久影视 |