Java事件处理——按钮和按键映射到动作对象
来源:互联网 发布:淘宝店铺扣48考试 编辑:程序博客网 时间:2024/05/16 06:53
目标:实现按下CTRL+Y、CTRL+B或CTRL+R来改变面板颜色
Swing包的Action接口封装了命令,将它们连接到多个事件源。
java代码如下:
ActionFrame.java
package simpleframe;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class ActionFrame extends JFrame{ private JPanel buttonPanel; private static final int DEFAULT_WIDTH = 300; private static final int DEFAULT_HEIGHT = 200; public ActionFrame(){ setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT); buttonPanel = new JPanel(); //定义action Action yellowAction = new ColorAction("黄色", new ImageIcon("yellow-ball.gif"), Color.YELLOW); Action blueAction = new ColorAction("蓝色", new ImageIcon("blue-ball.gif"), Color.BLUE); Action redAction = new ColorAction("红色", new ImageIcon("red-ball.gif"), Color.RED); //给button添加动作 buttonPanel.add(new JButton(yellowAction)); buttonPanel.add(new JButton(blueAction)); buttonPanel.add(new JButton(redAction)); //把panel加到frame中 add(buttonPanel); //关联Y,B,R 键和名字 InputMap imap = buttonPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); imap.put(KeyStroke.getKeyStroke("ctrl Y"), "panel.yellow"); imap.put(KeyStroke.getKeyStroke("ctrl B"), "panel.blue"); imap.put(KeyStroke.getKeyStroke("ctrl R"), "panel.red"); //关联名字和动作 ActionMap amap = buttonPanel.getActionMap(); amap.put("panel.yellow", yellowAction); amap.put("panel.blue", blueAction); amap.put("panel.red", redAction); } public class ColorAction extends AbstractAction{//AbstractAction类实现了Action接口除actionPerformed方法之外的所有六个方法 /** * 构造一个color action * @param name button显示的名字 * @param icon button显示的图标 * @param c 背景颜色 */ public ColorAction(String name, Icon icon, Color c) { putValue(Action.NAME, name); putValue(Action.SMALL_ICON, icon); putValue(Action.SHORT_DESCRIPTION, "设置面板颜色为" + name.toLowerCase()); putValue("color", c); } @Override public void actionPerformed(ActionEvent arg0) { Color c = (Color)getValue("color"); buttonPanel.setBackground(c); } } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { JFrame frame = new ActionFrame(); frame.setTitle("ActionColor"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }); }}
运行结果如下图:
阅读全文
0 0
- Java事件处理——按钮和按键映射到动作对象
- Java 按钮和单击事件映射到动作对象改变面板颜色小程序实例 Java核心技术 事件处理
- Java处理按键事件
- java 动作事件的处理
- QT用信号和处理机制为事件添加处理动作(点击按钮显示helloworld)
- Java Swing事件处理——键盘事件及监听处理 KeyListener 按键测试
- android 处理按键动作
- Java图形界面中单选按钮JRadioButton和按钮Button事件处理
- Android按键事件——上层与驱动的映射
- Android按键事件——上层与驱动的映射
- 博为峰Java技术文章 ——JavaSE Swing动作事件的处理
- Android事件—单选按键和下拉按键
- java按钮事件处理程序
- Android面面观——Android事件处理下(按键、触摸屏和滚动球)
- Android按键事件映射表和转义符对照
- Android按键事件映射表和转义符对照
- android按键事件映射和转义符对照…
- javascript 记录按键动作和按键时间
- 什么叫做过拟合
- 个性化order排序字段
- JavaScript运动框架(四):多值运动
- 海航集团债务违约是谣传--开展各项活动促进两岸经济发展
- KMeans聚类图明晰画法
- Java事件处理——按钮和按键映射到动作对象
- CRC32查表法算法实现
- 数组拷贝
- cgi配置:apache2.4与apache2.2区别
- Python: PS 图像调整--对比度调整
- ZZULIOJ 2135 这里是天堂!【概率Dp---拆分分子分母】
- WSAAsyncGetHostByName()函数的正确使用!
- 使用 Office 365 PowerShell 管理用户帐户和许可证(八)使用 Office 365 PowerShell 冻结用户账户
- Spring MVC之异常处理