Java 如何将ActionListener添加到AWT菜单项?
谢谢你的关注! 请帮助一个新手:) 当前问题: 单击带有颜色名称的菜单项时,需要更改行的颜色 这是我更改线条颜色的代码。 创建menuItems时,我还为它们创建了actionListener: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
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...
}