利用SwingX与TimingFramework实现淡入淡出
时间:2010-12-17 BlogJava Sha Jiang
本文使用SwingX与TimingFramework展示了如何实现淡入淡出效果,程序简洁 实用,希望对大家能有所助益。
在Swing中使用AlphaComposite设置界面的半透明度,再配合 javax.swing.Timer可以比较容易地实现淡入淡出效果。但需要我们继承具体的 UI组件,并重写它的paintComponent方法,同时还要为Timer提供一个 ActionListener的实现。这些对于程序员来说,显得有些乏味。
幸运地是,SwingX中的JXPanel(JPanel的子类)通过setAlpha方法来设置半透 明度,JXPanel中的所有UI组件都可随之半透明化。TimingFramework提供的 Animator可以帮助我们非线性地设置JXPanel中的alpha值。故,我们在实现淡入 淡出时,可以使用JXPanel来替代JPanel,用Animator来替代Timer。
旋喘SwingX嚥TimingFramework糞?記秘記竃(2)
扮寂:2010-12-17 BlogJava Sha Jiang
和中頁匯倖掲械酒汽議幣箭?乎幣箭壓匯倖聞喘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
|