有两个类,ItemTestMain(用于显示界面,JMenu对象Menu有JMenuItem对象menuItem,File有item[0][0],item[0][1],Edit有item[1][0]和item[1][1] ) ;
类ItemControl对象itemControl用于监听JMenuItem对象.
核心语句及问题:
menuItem.addActionListener(itemControl);//这里测试成功,
jMenuItems[i][j].addActionListener(itemControl);//为各菜单选项添加监听;这里时报错,单击要么没反应,要么出错,
//File:ItemTestMain.java
package itemtest;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.UIManager;
import treetest.TreeTest;
public class ItemTestMain extends JFrame{
private JPanel pane=null;
private JMenuBar bar=null;
private JMenu menua=null;
public JMenuItem item=null;
private JMenu[] jMenus = null;//菜单项数组;
private String[] jMenusStr = {"File", "Edit"};//用于定义菜单项的内容
public JMenuItem[][] jMenuItems =null;//下拉菜单项;
private String[][] jMenuItemsStr = {
{ "Aa", "Ab", "Ac"}, {"Undo typing", "Bb"}};//定义下拉菜单项的显示内容;
ItemControl itemControl=null;
/**
*
*/
public ItemTestMain() {
super();
// TODO Auto-generated constructor stub
pane=new JPanel(new FlowLayout());
setSize(500, 310);
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
initialize();
this.add(pane);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void initialize() {
// TODO Auto-generated method stub
itemControl=new ItemControl(this);
bar=new JMenuBar();
menua=new JMenu("Menu");
item=new JMenuItem("MenuItem");
item.addActionListener(itemControl);
menua.add(item);
bar.add(menua);
pane.add(bar);
jMenus = new JMenu[jMenusStr.length];
jMenuItems = new JMenuItem[jMenuItemsStr.length][];//一维定义——定义jMenuItems行数;jMenuItemsStr.length=13
for (int i = 0; i < jMenusStr.length; i++) { //jMenusStr.length=13
jMenus[i] = new JMenu(jMenusStr[i]);
jMenuItems = new JMenuItem[jMenuItemsStr.length][jMenuItemsStr[i].length];//二维定义——定义jMenuItems列数
for (int j = 0; j < jMenuItemsStr[i].length; j++) {
jMenuItems[i][j] = new JMenuItem(jMenuItemsStr[i][j]);//初始化各jMenuItems;
jMenus[i].add(jMenuItems[i][j]);
jMenuItems[i][j].addActionListener(itemControl);//为各菜单选项添加监听;
}
bar.add(jMenus[i]);
}
}
public void actionshow(String str){//响应单击//File:ItemControl
jMenuItems = new JMenuItem[jMenuItemsStr.length][jMenuItemsStr[i].length];//二维定义——定义jMenuItems列数
已解决:第二维初始化改为 jMenuItems[i]=new JMenuItem[jMenuItemsStr[i].length];
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。