java

位置:IT落伍者 >> java >> 浏览文章

Java Swing中的Accelerator Key


发布日期:2021年03月27日
 
Java Swing中的Accelerator Key
前言:没事在看《Java Swing nd Edition》看到有个东西还是蛮有趣的说就是Accelerator key呵呵好像要配合Alt一起用才能起到作用蛮多东西是看了程序后才发现原文的意思的这次算是插曲不在MapsEditor的范围之内顺便提一下中午起来有个人加了群蛮开心的高手也好初学也罢大家重要的是交流大胆说出自己的想法错了就错了谁没错过啊……

关于Accelerator key在做GUI的时候还是比较重要的吧至少以前认为那些不用鼠标的人蛮高手的呵呵自己也会去刻意记些常用的快捷键在Windows下用用还算凑合那呵呵程序是从书上搬下来的觉得蛮有意思的大家可以看看


// MnemonicLabelsjava

//

import javaxswing*;

import javaawt*;

// Shows how displayedMnemonic and labelFor properties work together

public class MnemonicLabels {

public static void main(String[] args) {

JTextField firstField = new JTextField();

JTextField middleField = new JTextField();

JTextField lastField = new JTextField();

// Create labels and mnemonics

JLabel firstLabel = new JLabel(First Name JLabelRIGHT);

firstLabelsetDisplayedMnemonic(F);

firstLabelsetLabelFor(firstField);

JLabel middleLabel = new JLabel(Middle Initial JLabelRIGHT);

middleLabelsetDisplayedMnemonic(I);

middleLabelsetDisplayedMnemonicIndex(); // Requires

middleLabelsetLabelFor(middleField);

JLabel lastLabel = new JLabel(Last Name JLabelRIGHT);

lastLabelsetDisplayedMnemonic(L);

lastLabelsetLabelFor(lastField);

// Layout and display

JPanel p = new JPanel( );

psetLayout(new GridLayout( ));

padd(firstLabel);

padd(firstField);

padd(middleLabel);

padd(middleField);

padd(lastLabel);

padd(lastField);

JFrame f = new JFrame(MnemonicLabels);

fsetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);

fsetContentPane(p);

fpack( );

fsetVisible(true);

}

}

有Java环境的可以拷贝去然后编译运行看看然后分别按Alt+FAlt+IAlt+LFoucs就会在三个TextField之间转换关键的是firstLabelsetDisplayedMnemonic(F)和firstLabelsetLabelFor(firstField)前一个setDisplayedMnemonic(char)选定哪个character为快捷键就像VC里面的&一样的功能而后面这个setLabelFor(comp)则表明你按下相应的快捷键(加速键)后焦点定位到哪个控件上(当然要有焦点的控件)需要注意的是第二个快捷键的设置middleLabelsetDisplayedMnemonicIndex();这个需要SDK的支持这个的作用就是设置显示的下划线为第几个字符很明显我们注意到对于I来说Middle Initial中前后有两个I而这里是部分大小写的所以按照第一个或者第三个的做法的话程序会默认JLabel中文字满足的第一个字符加下划线也就是这个样子了Middle Initial我们要的是Middle Initial的效果所以把下划线设置到第七个字符I上面其他也没什么好玩的了除了这个应该都能摸索懂吧呵呵

               

上一篇:IO的阻塞与非阻塞、同步与异步以及Java网络IO交互方式

下一篇:谨防Java网络编程“陷阱”