import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class ActionTest
{ public static void main(String[] args)
{
// TODO Auto-generated method stub
JFrame frame  =new IniFrame();
frame.setVisible(true);
}
}
class IniFrame extends JFrame
{
public IniFrame()
{
Panel panel = new Panel();
Container content = getContentPane();
content.add(panel);
setSize(300,300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
}
}
class Panel extends JPanel
{
public Panel()
{
Action action = new ColorAction("blue",Color.BLUE);
JButton btn = new JButton(action);
add(btn);
}
}
class ColorAction extends AbstractAction
{
public ColorAction(String name,Color c)
{
putValue(Action.NAME,name);
putValue("color",c);
putValue(Action.SHORT_DESCRIPTION,"set color to"+name);
}
public void actionPerformed(ActionEvent e)
{
Color c = (Color)getValue("color");
setBackground(c);
}
}
错误在setBackground(c);这行。。