gpt4 book ai didi

java - 如何将 ActionListener 添加到 AWT MenuItem?

转载 作者:行者123 更新时间:2023-12-01 14:05:34 25 4
gpt4 key购买 nike

感谢您的关注!请帮助新手:)

当前问题:

单击具有颜色名称的菜单项时需要更改线条的颜色。

这是我用于更改线条颜色的代码。当我创建菜单项时,我还为它们创建了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);
}

但是...这不起作用!请给个建议。我已经没有主意了。

很高兴听到任何消息:)再次感谢!

更新:

想要将这部分更改为更优雅且实际有效的内容:

colorSubMenu.addActionListener(
new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
THIS LINE DOESN'T WORK ===>> color = Color.getColor(colorSubMenu.getItem(ii)));
}
}
);

最佳答案

Color#getColor依赖于使用系统属性中的颜色。这些可能与问题中颜色数组中的颜色不匹配。您可以使用反射来代替

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

关于java - 如何将 ActionListener 添加到 AWT MenuItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18937824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com