JAVA 请问这段代码什么意思....最好全部标记,谢谢~!

for(i=0;i<menuItem.length;i++){
for(j=0;j<menuItem[i].length;j++){
if(i==0 && j==4 || i==1 && j==2) jMenu[i].addSeparator();
if(i!=2){
jMenuItem[i][j] = new JMenuItem(menuItem[i][j].split("\\|")[0]);
if(menuItem[i][j].split("\\|").length!=1)
jMenuItem[i][j].setAccelerator(KeyStroke.getKeyStroke(Integer.parseInt(menuItem[i][j].split("\\|")[1]), ActionEvent.CTRL_MASK) );
jMenuItem[i][j].addActionListener(this);
jMenuItem[i][j].setMnemonic(menuItem[i][j].split("\\(")[1].charAt(0));

jMenu[i].add(jMenuItem[i][j]);
}
else{
jCheckBoxMenuItem[j] = new JCheckBoxMenuItem(menuItem[i][j].split("\\|")[0]);
if(menuItem[i][j].split("\\|").length!=1)
jCheckBoxMenuItem[j].setAccelerator(KeyStroke.getKeyStroke(Integer.parseInt(menuItem[i][j].split("\\|")[1]), ActionEvent.CTRL_MASK) );
jCheckBoxMenuItem[j].addActionListener(this);
jCheckBoxMenuItem[j].setMnemonic(menuItem[i][j].split("\\(")[1].charAt(0));
jCheckBoxMenuItem[j].setSelected( true );
jMenu[i].add(jCheckBoxMenuItem[j]);
}
}
}
忘记了~!现在加了!~

第1个回答  2010-06-22
只给0分?
第2个回答  2010-06-22
//这是在实例化一个菜单并且添加事件
for(i=0;i<menuItem.length;i++){
for(j=0;j<menuItem[i].length;j++){
if(i==0 && j==4 || i==1 && j==2){
jMenu[i].addSeparator(); //在第一个菜单项的第四个子菜单和第二个菜单项第三个子菜单后,添加分割线
}
if(i!=2){//如果不是第三个菜单项
//split()方法 是通过指定标识分割字符串并返回字符串数组 这里的 \\ 是转译 |
jMenuItem[i][j] = new JMenuItem(menuItem[i][j].split("\\|")[0]);//实例化菜单项并通过 "|" 分割menuItem[i][j] 并取第一个元素作为菜单项的名字
if(menuItem[i][j].split("\\|").length!=1){//如果这个字符串数组的长度不定于1
//setAccelerator 设置修改键,它能直接调用菜单项的操作侦听器而不必显示菜单的层次结构。
//KeyStroke按键操作 如 KEY_PRESSED 和 KEY_RELEASED KeyEvents 执行的操作
//这里是指 让 字符数组的第二个元素 与 ctrl 键 组合触发这个菜单项
jMenuItem[i][j].setAccelerator(KeyStroke.getKeyStroke(Integer.parseInt(menuItem[i][j].split("\\|")[1]), ActionEvent.CTRL_MASK) );
}

//添加各个菜单项的时间监听 此类肯定实现了ActionListener接口
jMenuItem[i][j].addActionListener(this);
//设置当前菜单项上的键盘助记符(类似与 文件(F) 后面的这个F 就是助记符 标识它与某个键组合使用 这里是ctrl键)
//这里是通过"("分割menuItem[i][j]取的是第一个"("后面的值并转换为char(我猜menuItem[i][j]的值应该类似 "文件|F(F)" 这样的字符串吧)
jMenuItem[i][j].setMnemonic(menuItem[i][j].split("\\(")[1].charAt(0));
//把菜单项添加到菜单中
jMenu[i].add(jMenuItem[i][j]);
}else{
//这里就是跟上面同理了,只不过是用的可以被选定或取消选定的菜单项(第三个菜单)
jCheckBoxMenuItem[j] = new JCheckBoxMenuItem(menuItem[i][j].split("\\|")[0]);
if(menuItem[i][j].split("\\|").length!=1){
jCheckBoxMenuItem[j].setAccelerator(KeyStroke.getKeyStroke(Integer.parseInt(menuItem[i][j].split("\\|")[1]), ActionEvent.CTRL_MASK) );
}

jCheckBoxMenuItem[j].addActionListener(this);
jCheckBoxMenuItem[j].setMnemonic(menuItem[i][j].split("\\(")[1].charAt(0));
//设置已选中
jCheckBoxMenuItem[j].setSelected( true );
jMenu[i].add(jCheckBoxMenuItem[j]);
}
}
}

够清晰了吧?不清楚HI我。本回答被提问者采纳