我用你的代码试就没问题啊,是不是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);
}
}
}
下面是我测试的代码,我在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);
}
}
}
是直接在使用还是先打开了File菜单,然后按下Ctrl + O.
如果是后一种情况,那等于没有用,不幸的是我的情况就属于后一种:(
你用我的代码运行一下试试,或许是Applet的问题,你是用IE打开的吧?
用appletviewer试试。