十分简单的一个窗体,有2个按钮Yes和No,Yes按钮设置了快捷键"Y",希望用户可以用Alt+Y来简化操作。    现在快捷键的功能是有了,可是显示方面却十分奇怪,只有当按下Alt键时,Yes按钮的text才会变为"Yes"的样子,不按就只显示"Yes"。不过我好像记得有些地方的swing按钮(不是菜单)可以一直显示助记键的。    请问各为大虾,JDK里没有提供一直显示助记键方法的情况下,如何让这个下划线形式始终显示在界面上?简单的代码如下:
import java.awt.Dimension;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;public class MyFrame extends JFrame { public MyFrame() {
setPreferredSize(new Dimension(200, 100));

JButton yes = new JButton("Yes");
yes.setMnemonic('Y');
JButton no = new JButton("No");

JPanel down = new JPanel();
down.add(yes);
down.add(no); add(down);
}

public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
} MyFrame frame = new MyFrame();
frame.pack();
frame.setVisible(true);
}
}

解决方案 »

  1.   

        只要设定了外观感觉(系统是WinXP):     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        快捷键就只能通过按下Alt键来显示了,而在Java外观下是正常的。    由于按钮的内容需要被记录,而实际环境下该值是不可预料的字符串,就是说不能在按钮的Text里以setText("<html><u>Y</u>es</html>")的形式来显示下划线,也不方便通过其他修改Text属性的方式来显示该下划线。
      

  2.   


    "Y"的下划线一直显示?你的JDK是什么版本?
    我试过1.6_07和1.5_09,都需要按住Alt键
    系统是WinXP外观。
      

  3.   

    回家试了试,在简体中文XP(盗版)上运行良好,下滑线正常。
    可是到了OEM版英文XP上,同样的代码就不会自动显示下滑线。
    这算java的BUG吗?
    这样看来没办法解决阿,大家帮忙支支招,因为软件是运行在这种英文XP上的@.@
      

  4.   

    这个是Swing根据windows系统的一个设置专门这样处理的
    看这个
    http://xuwq.cn/2008/07/blog-post_12.html