java中对窗体设置快捷键程序_java Swing给一个窗体增加快捷键实例源码介绍

本文介绍了如何在Java Swing中为窗体添加快捷键,详细解析了Swing的InputMap和ActionMap机制,通过实例展示了如何创建一个使背景色变红的F2快捷键。
摘要由CSDN通过智能技术生成

java Swing给一个窗体增加快捷键实例源码介绍。熟练运用一些快捷键的话,会大大增加效率,那么使用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定义为使背景色变红的快捷键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值