Action示例(使用Action多触发响应事件)

 
  
1 import java.awt. * ;
2 import javax.swing. * ;
3 /**
4 * 动作 Action 示例
5 * ActionListener-->Action
6 */
7
8 import com.sun.java_cup.internal.internal_error;
9
10 import java.awt.event. * ;
11
12 public class ActionTest {
13 public static void main(String[] argu)
14 {
15 EventQueue.invokeLater( new Runnable()
16 {
17 public void run()
18 {
19 ActionFrame actionframe = new ActionFrame();
20 actionframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21 actionframe.setVisible( true );
22 }
23 });
24 }
25 }
26 class ActionFrame extends JFrame
27 {
28 public ActionFrame()
29 {
30 setTitle( " ActionTest " );
31 setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
32
33 buttonPanel = new JPanel();
34 // 实例化Action
35 Action yellowAction = new ColorAction( " Yellow " , new ImageIcon( " yellow.gif " ),Color.YELLOW);
36 Action blueAction = new ColorAction( " Blue " , new ImageIcon( " blue.gif " ),Color.BLUE);
37 Action redAction = new ColorAction( " Red " , new ImageIcon( " red.gif " ),Color.RED);
38 // 用Action制作控件(按钮)
39 buttonPanel.add( new JButton(yellowAction));
40 buttonPanel.add( new JButton(blueAction));
41 buttonPanel.add( new JButton(redAction));
42
43 add(buttonPanel);
44 // InputMap 1次映射,从键盘到控件
45 InputMap imap = buttonPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
46 imap.put(KeyStroke.getKeyStroke( " ctrl Y " ), " panel.yellow " );
47 imap.put(KeyStroke.getKeyStroke( " ctrl B " ), " panel.blue " );
48 imap.put(KeyStroke.getKeyStroke( " ctrl R " ), " panel.red " );
49 // ActionMap 2次映射,从控件到Action
50 ActionMap amap = buttonPanel.getActionMap();
51 amap.put( " panel.yellow " , yellowAction);
52 amap.put( " panel.blue " , blueAction);
53 amap.put( " panel.red " , redAction);
54 }
55 // 自定义Action类ColorAction(使用AbstractAction)
56 public class ColorAction extends AbstractAction
57 {
58 public ColorAction(String name,ImageIcon icon,Color c)
59 {
60 putValue(Action.NAME, name);
61 putValue(Action.SMALL_ICON, icon);
62 putValue(Action.SHORT_DESCRIPTION, " Set panel color to " + name.toLowerCase());
63 putValue( " color " , c);
64 }
65 public void actionPerformed(ActionEvent event)
66 {
67 Color c = (Color)getValue( " color " );
68 buttonPanel.setBackground(c);
69 }
70 }
71
72 private JPanel buttonPanel;
73 public static final int DEFAULT_WIDTH = 300 ;
74 public static final int DEFAULT_HEIGHT = 300 ;
75 }

转载于:https://www.cnblogs.com/binbinjava/archive/2011/04/25/2028616.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值