博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
给一个窗体增加快捷键
阅读量:2260 次
发布时间:2019-05-09

本文共 1212 字,大约阅读时间需要 4 分钟。

      我们在使用一个应用程序的时候,如果熟练运用一些快捷键的话,会大大增加效率,那么使用Swing编程该如何添加快捷键呢?下面就让我们来实现他。
      首先来看一下可能遇到哪些问题。一般来讲,快捷键一定是要被绑定到某一个组件上面的,并且在这个组件拥有焦点的时候快捷键才有效。这就遇到问题了,并没有哪一个组件能够长期拥有焦点,焦点是经常变化的,难道快捷键也会随着组件失去焦点而失效吗?Swing的设计者考虑到了这个问题,他们放宽了快捷键有效的范围:本组件拥有焦点,快捷键有效;本组件内部包含的其他组件拥有焦点,快捷键有效;与本组件处于并列关系的其他组件(即几个组件位于同一个容器中)拥有焦点,快捷键有效。
      但是,Swing并没有把快捷键和实际的动作直接映射起来,他采用的是间接映射的方式:把KeyStroke和某个Key映射一下(称之为InputMap),再把Key和某个Action映射一下(称之为ActionMap),从而实现KeyStroke与Action的间接映射。这样,对于任何一个组件都维护者4个映射表:三个InputMap分别对应这3个有效范围,外加1个ActionMap。因此,我们给系统添加快捷键的一般步骤是:选择一个合适范围的InputMap,添加(Key-KeyStroke)映射;再在ActionMap中添加(Key-Action)映射。代码如下:
public
 
class
 ButtonClickPanel 
extends
 JPanel 
{
    
public ButtonClickPanel() {
        add(
new JButton("Red"));
        
//选择范围为WHEN_ANCESTOR_OF_FOCUSED_COMPONENT的InputMap映射
        InputMap im1 = getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
        im1.put(KeyStroke.getKeyStroke(
"F2"), "change to red");
        
//添加ActionMap映射
        ActionMap am1 = getActionMap();
        am1.put(
"change to red"new MyAction(Color.RED));
    }
    
    
class MyAction extends AbstractAction {
        
public MyAction(Color c) {;
            co 
= c;
        }
        @Override
        
public void actionPerformed(ActionEvent e) {
            
// TODO Auto-generated method stub
            setBackground(co);
        }
        
        
private Color co;
    }
}
这样就将F2定义为使背景色变红的快捷键。

转载地址:http://zvdcb.baihongyu.com/

你可能感兴趣的文章
很有用的系统宏
查看>>
《圈圈教你玩USB》之 USB鼠标
查看>>
《圈圈教你玩USB》之 USB鼠标 描述符
查看>>
“复合设备(Compound Device)”可以占用多个地址。所谓复合设备其实就是把多个功能设备 通过内置的USB HUB 组合而成的设备,比如带录音话筒的USB 摄像头
查看>>
USB 采用“令牌包”-“数据包”-“握手包”的传输机制
查看>>
使用HID 设备的一个好处就是,操作系统自带了HID 类的驱 动程序,而用户无需去开发很麻烦的驱动程序
查看>>
表达式剖析器(THE EXPRESSION PARSER)
查看>>
USB 主机在请求HID 设备的配置描述符时,设备首先返回的描述符为:
查看>>
USB设备开发工作日志之三——对ST官方资料的认识
查看>>
usb开发笔记之三:如何编写应用程序与 USB HID 设备通讯(读写USB HID 设备)
查看>>
usb开发工作日志之二——usb设备枚举过程
查看>>
usb设备驱动开发日志之一
查看>>
学习笔记——usb hid
查看>>
STM32 USB-HID通信移植步骤
查看>>
HID设备的报告描述符
查看>>
vmWare上运行VxWorks
查看>>
Windows有很多端口是开放的,netstat/an就可以看到端口的开放情况
查看>>
SuperScan
查看>>
FourDigitDisplay
查看>>
3.10.5 指针的 “near” 和 “far” 指定
查看>>