<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原創
    主站蜘蛛池模板: 免费在线观看一级毛片| 在线观看免费中文视频| 亚洲国产精品无码久久久久久曰 | 亚洲av成人一区二区三区| 日韩免费人妻AV无码专区蜜桃 | 亚洲高清成人一区二区三区| 亚洲国产精品ⅴa在线观看| 成人午夜18免费看| 亚洲高清视频一视频二视频三| 亚洲乱码无人区卡1卡2卡3| 男女一边摸一边做爽的免费视频| 亚洲免费一级视频| 久久久久亚洲国产| 性无码免费一区二区三区在线| 国产极品粉嫩泬免费观看| 亚洲av无码成人影院一区| 免费a级毛片无码a∨性按摩| 四虎成人精品国产永久免费无码| 亚洲区不卡顿区在线观看| 国内精品免费在线观看| 国产免费爽爽视频免费可以看| 激情无码亚洲一区二区三区| 免费午夜爽爽爽WWW视频十八禁 | 亚洲福利精品电影在线观看| 中文字幕a∨在线乱码免费看| 久久精品国产亚洲av成人| 91精品手机国产免费| 中文文字幕文字幕亚洲色| 国产精品成人免费综合| 成人网站免费大全日韩国产| 亚洲综合婷婷久久| 免费无码一区二区三区蜜桃大| 亚洲精品中文字幕麻豆| 国产成人无码区免费网站| 亚洲成aⅴ人片在线观| 国产精品无码一二区免费| 青青操视频在线免费观看| 亚洲国产成人久久99精品| 久久国产精品成人片免费| 亚洲乱码无人区卡1卡2卡3| 亚洲韩国精品无码一区二区三区|