<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    John Jiang

    a cup of Java, cheers!
    https://github.com/johnshajiang/blog

       :: 首頁 ::  :: 聯系 :: 聚合  :: 管理 ::
      131 隨筆 :: 1 文章 :: 530 評論 :: 0 Trackbacks
    利用SwingX與TimingFramework實現淡入淡出
    本文使用SwingXTimingFramework展示了如何實現淡入淡出效果,程序簡潔實用,希望對大家能有所助益。(2009.09.28最后更新)

    在Swing中使用AlphaComposite設置界面的半透明度,再配合javax.swing.Timer可以比較容易地實現淡入淡出效果。但需要我們繼承具體的UI組件,并重寫它的paintComponent方法,同時還要為Timer提供一個ActionListener的實現。這些對于程序員來說,顯得有些乏味。
        幸運地是,SwingX中的JXPanel(JPanel的子類)通過setAlpha方法來設置半透明度,JXPanel中的所有UI組件都可隨之半透明化。TimingFramework提供的Animator可以幫助我們非線性地設置JXPanel中的alpha值。故,我們在實現淡入淡出時,可以使用JXPanel來替代JPanel,用Animator來替代Timer。


        下面是一個非常簡單的示例,該示例在一個使用CardLayout的JPanel--cardPanel,中另包含了兩個JXPanel--panelA和panelB,這兩個子容器中又分別有一個JButton--buttonA和buttonB。當點擊buttonA時,將淡入顯示panelB;當點擊buttonB時,將淡入顯示panelA。
     1 public class FadingCardDemo extends JFrame {
     2 
     3     private static final long serialVersionUID = 8005909309849021746L;
     4 
     5     private String CARD_A = "CARD_A";
     6     private String CARD_B = "CARD_B";
     7 
     8     private JPanel cardPanel = null;
     9     private JXPanel panelA = null;
    10     private JXPanel panelB = null;
    11     private JButton buttonA = null;
    12     private JButton buttonB = null;
    13 
    14     public FadingCardDemo() {
    15         super("FadingButton Demo");
    16         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    17         initUI();
    18     }
    19 
    20     private void initUI() {
    21         cardPanel = new JPanel(new CardLayout());
    22 
    23         buttonA = new JButton("Button A");
    24         buttonA.addActionListener(actionHandler);
    25         panelA = new JXPanel(new BorderLayout());
    26         panelA.add(buttonA, BorderLayout.CENTER);
    27         cardPanel.add(panelA, CARD_A);
    28 
    29         buttonB = new JButton("Button B");
    30         buttonB.addActionListener(actionHandler);
    31         panelB = new JXPanel(new BorderLayout());
    32         panelB.add(buttonB, BorderLayout.CENTER);
    33         cardPanel.add(panelB, CARD_B);
    34 
    35         Container container = getContentPane();
    36         container.setLayout(new BorderLayout());
    37         container.add(cardPanel, BorderLayout.CENTER);
    38     }
    39 
    40     private ActionListener actionHandler = new ActionListener() {
    41 
    42         private Animator animator = null;
    43 
    44         public void actionPerformed(ActionEvent e) {
    45             if (animator == null) {
    46                 animator = new Animator(2000);
    47                 animator.setDeceleration(0.2F);
    48                 animator.setAcceleration(0.4F);
    49             } else if (animator.isRunning()) {
    50                 animator.stop();
    51             }
    52 
    53             JButton button = (JButton) e.getSource();
    54             if (button == buttonA) {
    55                 animator.addTarget(new PropertySetter(panelB, "alpha"1.0F));
    56                 panelB.setAlpha(0.1F);
    57                 ((CardLayout) cardPanel.getLayout()).show(cardPanel, CARD_B);
    58             } else if (button == buttonB) {
    59                 animator.addTarget(new PropertySetter(panelA, "alpha"1.0F));
    60                 panelA.setAlpha(0.1F);
    61                 ((CardLayout) cardPanel.getLayout()).show(cardPanel, CARD_A);
    62             }
    63             animator.start();
    64         }
    65     };
    66 
    67     public static void main(String[] args) {
    68         SwingUtilities.invokeLater(new Runnable() {
    69             public void run() {
    70                 FadingCardDemo demo = new FadingCardDemo();
    71                 demo.setSize(new Dimension(400300));
    72                 demo.setVisible(true);
    73             }
    74         });
    75     }
    76 }
    posted on 2009-09-28 09:46 John Jiang 閱讀(2038) 評論(0)  編輯  收藏 所屬分類: JavaSwingGUI原創
    主站蜘蛛池模板: 亚洲成a人无码亚洲成av无码 | 亚洲精品在线电影| 亚洲欧洲日产国产最新| 456亚洲人成影院在线观| 理论亚洲区美一区二区三区| 免费的黄色的网站| 7x7x7x免费在线观看| 永久免费毛片在线播放| 亚洲精品A在线观看| 91亚洲精品视频| 五月婷婷免费视频| 黄页网站免费观看| 亚洲区小说区图片区QVOD| 性xxxx黑人与亚洲| 免费av欧美国产在钱| 久久99国产亚洲精品观看| 亚洲精品无码不卡在线播放| 好久久免费视频高清| 四虎成人免费观看在线网址 | 国产在线播放线91免费| 男人的好免费观看在线视频| 亚洲欧美中文日韩视频| 国产乱子伦精品免费女| 亚洲综合色7777情网站777| 午夜a级成人免费毛片| 亚洲邪恶天堂影院在线观看| 美女无遮挡拍拍拍免费视频 | 亚洲最大AV网站在线观看| 亚洲变态另类一区二区三区| 无码不卡亚洲成?人片| 亚洲中文字幕无码av| 日本免费中文视频| 全亚洲最新黄色特级网站 | a级毛片100部免费观看| 免费人成在线观看网站品爱网日本| 亚洲综合视频在线观看| 好爽又高潮了毛片免费下载| 无码的免费不卡毛片视频| 亚洲经典在线中文字幕| 国产午夜免费秋霞影院| 全部免费毛片在线播放|