设置快捷键不能.....

MindActUponMind 2003-04-25 02:52:54


private class MyMenuBar extends JMenuBar{
////这是一个Applet程序中的一部分,我可以保证程序的其它部分是正确的,
////而且与本段没有关系(事实上,是为了测试才把原来的程序改成这样的:))
////因此把类写成private也是可以的
public MyMenuBar(){
JMenu menu;
///1.File(_F)
String[] fileMenuItems = {"打开(O)","退出(x)"};
char[] fileMenuShortcuts = {'O','x'};
menu = new JMenu("文件(F)");
menu.setMnemonic('F');
for(int i = 0;i < fileMenuItems.length;i++){
JMenuItem item = new JMenuItem(fileMenuItems[i]);
switch(i){
case 0 :item.setAccelerator(KeyStroke.getKeyStroke(fileMenuShortcuts[i],
java.awt.Event.CTRL_MASK, false));
item.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// DataBaseConnectionDialog connect = new DataBaseConnectionDialog(null);
// connect.show();
System.out.println("Opening....");
}
});
break;

case 1:item.setAccelerator(KeyStroke.getKeyStroke(fileMenuShortcuts[i],
java.awt.Event.CTRL_MASK, false));
item.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Exit....");
}
});
break;

}
menu.add(item);
}
add(menu);
}
}


整个程序思路很是简单,编译也没有错,执行也可以.但是,执行结果是非预期的:
setAccelerator似乎没有起到作用......
...全文
27 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MindActUponMind 2003-04-25
  • 打赏
  • 举报
回复
不是用IE的,也是Console
yuanmeng163 2003-04-25
  • 打赏
  • 举报
回复
我这边不用打开File菜单,直接使用啊。
你用我的代码运行一下试试,或许是Applet的问题,你是用IE打开的吧?
用appletviewer试试。
MindActUponMind 2003-04-25
  • 打赏
  • 举报
回复
我用的是:JDK1.4 + UltraEdit
MindActUponMind 2003-04-25
  • 打赏
  • 举报
回复
没问题???
是直接在使用还是先打开了File菜单,然后按下Ctrl + O.
如果是后一种情况,那等于没有用,不幸的是我的情况就属于后一种:(
yuanmeng163 2003-04-25
  • 打赏
  • 举报
回复
我用你的代码试就没问题啊,是不是Ctrl+o、Ctrl+F9已经被别程序定义了?
下面是我测试的代码,我在JB8中通过:

public class TestMenu {
MyMenuBar menuBar = new MyMenuBar();
JFrame f = new JFrame("TestMenu");

public TestMenu() {
f.setJMenuBar(menuBar);
f.setBounds(100, 100, 300, 400);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.show();
}

public static void main(String[] args) {
new TestMenu();
}

private class MyMenuBar extends JMenuBar{
public MyMenuBar(){
JMenu menu;
///1.File(_F)
String[] fileMenuItems = {"打开(O)","退出(x)"};
char[] fileMenuShortcuts = {'O','x'};
menu = new JMenu("文件(F)");
menu.setMnemonic('F');
for(int i = 0;i < fileMenuItems.length;i++){
JMenuItem item = new JMenuItem(fileMenuItems[i]);
switch(i){
case 0 :item.setAccelerator(KeyStroke.getKeyStroke(fileMenuShortcuts[i],
java.awt.Event.CTRL_MASK, false));
item.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
// DataBaseConnectionDialog connect = new DataBaseConnectionDialog(null);
// connect.show();
System.out.println("Opening....");
}
});
break;

case 1:item.setAccelerator(KeyStroke.getKeyStroke(fileMenuShortcuts[i],
java.awt.Event.CTRL_MASK, false));
item.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.out.println("Exit....");
}
});
break;

}
menu.add(item);
}
add(menu);
}
}
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧