用户点击窗口中的yellow按钮、用户按下Ctrl + Y 键,都会改变背景颜色至黄色。多个事件源调用的都是同一个类的actionPerformed()方法.

Ctrl + Y 黄

Ctrl + B 绿

Ctrl + L 黑

相关类:

public class KeyStroke
extends AWTKeyStroke

A KeyStroke represents a key action on the keyboard, or equivalent input device.

public abstract class AbstractAction
extends Object
implements Action, Cloneable, Serializable

This class provides default implementations for the JFC Action interface. Standard behaviors like the get and set methods for Action object properties (icon, text, and enabled) are defined here. The developer need only subclass this abstract class and define the actionPerformed method.

相关方法:

JComponent类

public finalInputMapgetInputMap(intcondition)

Returns the InputMap that is used during condition.

condition - one of WHEN_IN_FOCUSED_WINDOW, WHEN_FOCUSED, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT

public finalActionMapgetActionMap()

Returns the ActionMap used to determine what Action to fire for particular KeyStroke binding. The returned ActionMap, unless otherwise set, will have the ActionMap from the UI set as the parent.

代码:

package cn.youthol;import java.awt.*;
import javax.swing.*;import java.awt.event.*;public class Main
{/*** @param args*/public static void main(String[] args){EventQueue.invokeLater(new Runnable(){public void run(){MyFrame f = new MyFrame("改变背景颜色");f.setDefaultCloseOperation(MyFrame.EXIT_ON_CLOSE);f.setVisible(true);}});}}/*** 框架窗口*/
class MyFrame extends JFrame
{private JPanel mainPanel;private final int WINDOW_WIDTH = 800;private final int WINDOW_HEIGHT = 600;private static String yellow = "toYellow";private static String blue = "toBlue";private static String black = "toBlack";public MyFrame(String title){super(title);setSize(WINDOW_WIDTH,WINDOW_HEIGHT);mainPanel = new JPanel();add(mainPanel);//设置Button和动作监听器setComponents();}private void setComponents(){//创建监听器Action yellowListener = new KeyListener("Yellow",Color.YELLOW);Action blackListener = new KeyListener("Black",Color.BLACK);Action blueListener = new KeyListener("Blue",Color.BLUE);//创建ButtonJButton btnYellow = new JButton(yellowListener);JButton btnBlack = new JButton(blackListener);JButton btnBlue = new JButton(blueListener);//添加ButtonmainPanel.add(btnYellow);mainPanel.add(btnBlack);mainPanel.add(btnBlue);//设置MapInputMap imap = mainPanel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);imap.put(KeyStroke.getKeyStroke("ctrl Y"), MyFrame.yellow);imap.put(KeyStroke.getKeyStroke("ctrl B"), MyFrame.blue);imap.put(KeyStroke.getKeyStroke("ctrl L"), MyFrame.black);ActionMap amap = mainPanel.getActionMap();amap.put(MyFrame.yellow, yellowListener);amap.put(MyFrame.blue, blueListener);amap.put(MyFrame.black, blackListener);}/** 监听器类*/private class KeyListener extends AbstractAction{/** 构造方法*/public KeyListener(String actionName,Color c){putValue(Action.NAME,actionName); //动作名putValue(Action.SHORT_DESCRIPTION,"改变背景"); //这个字符串会出现在工具栏或按钮上,做为一个promptputValue("color",c); //把Color对象存储到"color"中,名/值对应}/** 改变背景颜色* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)*/public void actionPerformed(ActionEvent e){Color c = (Color)getValue("color"); //取出ColormainPanel.setBackground(c); //改变背景颜色}}}

基于AWT、Swing的GUI编程 - 多个命令共享同一个监听器类相关推荐

  1. 艾伟:基于.NET平台的Windows编程实战(四)—— 数据库操作类的编写

    本系列文章导航 基于.NET平台的Windows编程实战(一)--前言 基于.NET平台的Windows编程实战(二)-- 需求分析与数据库设计 基于.NET平台的Windows编程实战(四)-- 数 ...

  2. [java/初学者/GUI编程]GUI界面设计——界面组件类

     前言 GUI,即图形用户界面,其英文全称是Graphics User Interface. 它是基于图形的界面,windows就是一个图形用户界面的操作系统,而DOS是基于命令提示符的操作系统,GU ...

  3. 基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  4. [源码和文档分享]基于Java Swing JFream 组件的趣味推箱子小游戏

    一 需求分析 设计一个经典的推箱子小游戏,在窗体里有墙,箱子,胜利的标志,和工人,用户可以通过键盘上的"上"."下"."左"."右 ...

  5. Matlab GUI编程

    Matlab GUI编程 1.在命令行窗口输入guide >>guide 2.出现下图窗口,点击确定. 3.出现ui的编辑窗口 4.和大多数UI编程软件一样,直接拉控件就行了.双击控件可出 ...

  6. The package javax.swing is not accessible(java GUI 编程时引用swing包和awt包时会报错怎么办)

    Java GUI 编程时引用swing包和awt包时会报错怎么办 一.环境与错误现象 使用的编译器为eclipse,情况为: 二.解决方法 问题主要是由工程中的module-info.java这个文件 ...

  7. 【了解Java GUI编程】AWT和Swing的基本用法

    GUI :Graphical User Interface,图形用户界面,指在计算机出现后,在屏幕上使用图形界面来帮助用户(User)与机器(Machine)打交道用的界面接口(Interface). ...

  8. 基于Java Swing界面编程教学

    基于Java Swing界面编程 Swing是Java基础类的一部分,是一个为Java设计的GUI工具包. Swing包含了诸多图形用户界面(GUI)器件,提供了许多比awt更好的屏幕显示元素. 本教 ...

  9. java毕业设计——基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码)——愤怒的小鸟游戏

    基于java+Java awt+swing的愤怒的小鸟游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+Java awt+swing的愤怒的小鸟游戏设计与实现,文章末尾附有本毕 ...

最新文章

  1. Delphi中的消息截获
  2. Rsync服务让SLB下多台centos服务器文件同步更新
  3. Android开发--Matrix(二)--实现图片的旋转
  4. 18条交互设计和心理学之间的奇妙联系
  5. Java实现邮箱找回密码
  6. 回溯算法——复原IP地址(Leetcode 93)
  7. iOS蓝牙BLE4.0通信功能
  8. java难度_你们觉得java难吗?
  9. 陆奇最新投资方向:机器人、生物科技、远程工作、云计算技术、新材料、新消费娱乐等,奇绩创坛春季创业营线上开营
  10. mysql binlog 日志
  11. 单目相机 svd 从图像恢复3维位置_IMU辅助下的单目视觉坐标传递
  12. 微信支付开发之APP支付介绍及业务流程
  13. 什么是光纤?光纤有哪些优势?
  14. 三款软件,让你的文字转语音更简单
  15. vmware虚拟机windows xp 登录后死掉不能修复的错误的解决
  16. 读曾鸣的《智能商业》有感
  17. java将数字和英文分开_java中怎样将把字母和数字组成的字符串才分开
  18. php8能否救命,虎皮兰干枯发黄惨兮兮!2大罪魁祸首,对症下药救命
  19. 付宇泽20190919-3 效能分析
  20. Android_AsyncTaskDemo之QQ记步数(画圆形图片知识)

热门文章

  1. [翻译]SharePoint2007中创建Forms认证方式的站点
  2. mysql dbversion_爱可生详解MySQL|不能从MySQL 8.0 复制到 5.8?一招教你解决
  3. python中io中的+模式_Python的高级特性,模块和IO操作
  4. wps怎么做时间线_品牌锦囊 I 我想做企业宣传册,我的公司有很多业务线,怎么设计?...
  5. Java语音怎么输出翼型_] 靠增大翼型弯度来获得升力增加的操纵面是什么?
  6. redis映射的概念_Redis存储总是心里没底?你大概漏了这些数据结构原理
  7. db2 删除索引_程序员必须了解的知识点——你搞懂mysql索引机制了吗?
  8. 软件测试人员如何在“金三银四”跳槽季找到理想工作?
  9. Java高并发编程详解-代码在本地
  10. 蜘蛛搜索引擎_「SEO工具」如何利用爱站工具去分析各搜索引擎蜘蛛情况?