HelloWorld 善战者,求之于势,不责于人;故能择人而任势。

知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。物有本末,事有终始。知所先后,则近道矣。

  BlogJava :: 首页 ::  :: 联系 ::  :: 管理 ::
  167 随笔 :: 1 文章 :: 40 评论 :: 0 Trackbacks

Java快捷键制作

用过VB的知道按下F5是运行窗体,用过Photoshop的知道按下Tab是隐藏所有面板,你的Java程序也想有这个功能么?那么希望这篇文章对您有所帮助。

子菜单类JMenuItem有一个方法不知道你注意过没有:setAccelerator。

打开帮助文件对这个方法的描述是: 设置组合键,它能直接调用菜单项的操作侦听器而不必显示菜单的层次结构。所以用这个方法就能制作我们所要的快捷键了。

帮助文件告诉我们,传给setAccelerator方法所要的是一个KeyStroke,下面来说说这个类:

KeyStoke在Javax.swing包下,他的作用将我们要的键"捆"起来,再传给上面所说的setAccelerator之类的方法来使用,KeyStoke类提供了几个"捆"键的静态重载方法,下面说几个例子,你们自己去试试吧:

F5: KeyStroke.getKeyStroke(KeyEvent.F5, 0);

Ctrl+Q: KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK);

a:KeyStroke. getKeyStroke('a');

Alt+Shift+C:getKeyStroke(KeyEvent.VK_C, InputEvent.ALT_MASK | InputEvent.SHIFT_MASK, true);

当然,如果你不想引入一些如KeyEvent或InputEvent类的话,那么你就可以用KeyStroke.getKeyStroke(String s)方法来简化他:

F5:KeyStroke.getKeyStroke("F5");

Ctrl+Q:KeyStroke.getKeyStroke("control Q ");

a:KeyStroke.getKeyStroke( "typed a" );

Alt+Shift+C:getKeyStroke("alt shift released X ");

如为子菜单"打开"(名为:meuOpen)加入快捷键Ctrl+O:

meuOpen.setAccelerator(KeyStroke.getKeyStroke("control O"));

上面说的是子菜单的快捷键设置,现在说下其它控件的快捷键设置:

把开帮助文件,进入 javax.swing.AbstractButton ,你可以找到setMnemonic (int mnemonic),这就是AbstractButton子类设置快捷键的方法了,如一个按钮btn,设置快捷键为:btn.setMnemonic (KeyEvent.A),则它的快捷方式为Alt+A,它有一个修饰方法  setDisplayedMnemonicIndex (int index),作用是设置标题的第几个字符加个下划线来标识快捷键,如btn.setText("Open");btn.setDisplayedMnemonicIndex(0),则btn的标题变为Open。

聪明的你们突类旁通吧,一定可以成功的。不过要注意以下几点

1、在使用KeyStroke的getKeyStroke(String s)方法时应该注意用法如Ctrl用control表示,Alt用alt来表示,如果加上字母则要用大写,但只有一个键如a时,应该用小写:"type a"。

2、KeyStroke的getKeyStroke(String s)方法是方便,但如果使用不合法的语法是达不到目的的,这时你可以试试KeyStroke的其它静态方法。

3、AbstractButton的子类的快捷键用setMnemonic方法来设置只能有Alt+指定的键。



</script>

posted on 2008-03-07 13:38 helloworld2008 阅读(1096) 评论(1)  编辑  收藏 所属分类: java

评论

# re: Java快捷键制作(转 http://www.17zixue8.com/htm/biancheng/java/JavaSkill/0001.htm ) 2010-12-26 12:31 KLF HIJ
BU JASF

  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: