Java 如何将ActionListener添加到AWT菜单项?

Java 如何将ActionListener添加到AWT菜单项?,java,awt,menuitem,Java,Awt,Menuitem,谢谢你的关注! 请帮助一个新手:) 当前问题: 单击带有颜色名称的菜单项时,需要更改行的颜色 这是我更改线条颜色的代码。 创建menuItems时,我还为它们创建了actionListener: private void CreateMenu() { menuBar = new MenuBar(); menu = new Menu("File"); mSave = new MenuItem("Save"); colorSubMenu = new Menu("Cho

谢谢你的关注! 请帮助一个新手:)

当前问题:

单击带有颜色名称的菜单项时,需要更改行的颜色

这是我更改线条颜色的代码。 创建menuItems时,我还为它们创建了actionListener:

private void CreateMenu()
{
    menuBar = new MenuBar();
    menu = new Menu("File");
    mSave = new MenuItem("Save");
    colorSubMenu = new Menu("Choose Color...");

    String[] colors = {"red","yellow","green","blue","purple","black"};
    for(int i=0;i<colors.length;i++)
    {
        final int ii = i;
        MenuItem m=new MenuItem(colors[i]);
        colorSubMenu.add(m);
        colorSubMenu.addActionListener(
                                    new ActionListener()
                                            {
                                                @Override public void actionPerformed(ActionEvent e)
                                                {
                                       THIS LINE DOESN'T WORK ===>> color = Color.getColor(colorSubMenu.getItem(ii)));
                                                }
                                             }
                                        );
    }

    menu.add(mSave);        
    menu.add(colorSubMenu);
    menuBar.add(menu);        
    setMenuBar(menuBar);
}
依赖于使用系统属性中的颜色。这些颜色可能与问题中颜色数组中的颜色不匹配。您可以使用反射

@Override
public void actionPerformed(ActionEvent e) {
    Field field = Class.forName ("java.awt.Color").getField (e.getActionCommand());
    Color color = (Color) field.get (null);
    // use color...
}

你用awt做什么特别的事吗?你可以使用swing。你说的是哪一行?请原谅我取消了@durron597的清除-我需要创建代码,用从colorSubMenu(colorSubMenu包含名为red、black、blue等的菜单)中选择的颜色替换当前的行颜色,我尝试过,但没有work@GrimSmiler还不清楚,是哪条线?哪里?@nachokk,我很想使用swing,但实验室必须使用AWT:)请告诉我getActionCommand做什么?我查看了Oracle文档:)它是否返回导致该操作的项所存储的值?返回与该操作关联的命令字符串。这是我在图书馆里找到的
@Override
public void actionPerformed(ActionEvent e) {
    Field field = Class.forName ("java.awt.Color").getField (e.getActionCommand());
    Color color = (Color) field.get (null);
    // use color...
}