问一个关于处理按钮点击事件的问题
源代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ButtonTest {
public static void main(String[] args)
{
ButtonFrame frame=new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
class ButtonFrame extends JFrame
{
public ButtonFrame()
{
setTitle("button test!");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
ButtonPanel panel=new ButtonPanel();
add(panel);
}
public static final int DEFAULT_WIDTH=200;
public static final int DEFAULT_HEIGHT=300;
}
class ButtonPanel extends JPanel
{
public ButtonPanel()
{
JButton yellowButton=new JButton("yellow");
JButton blueButton=new JButton("blue");
JButton greenButton=new JButton("green");
add(yellowButton);
add(blueButton);
add(greenButton);
ColorAction yellowAction=new ColorAction(Color.yellow);
ColorAction blueAction=new ColorAction(Color.blue);
ColorAction greenAction=new ColorAction(Color.green);
yellowButton.addActionListener(yellowAction);
blueButton.addActionListener(blueAction);
greenButton.addActionListener(greenAction);
}
private class ColorAction implements ActionListener
{
private Color backgroundcolor;
public ColorAction(Color c)
{
backgroundcolor=c;
}
public void actionPerformed(ActionEvent e)
{
setBackground(backgroundcolor);
}
}
}
书上说因为ColorAction对象没有权限访问panel变量,所以把ColorAction设计为一个ButtonPanel的内部类。我想问为什么ColorAction类为什么要访问panel变量?
我看书上的说法好像是ColorAction类没有setBackground方法所以要用ButtonPanel类里面的setBackground()方法。setBackground方法不是定义再java.awt.Component里面吗?我已经加import java.awt.*;了,这是为什么啊!