当前位置: 代码迷 >> Java相关 >> 关于事件处理的一个问题?
  详细解决方案

关于事件处理的一个问题?

热度:132   发布时间:2007-06-08 18:32:17.0
关于事件处理的一个问题?

我的程序是在面板中添加3个按钮,当单击相应的按钮时,改变背景颜色

如下可以运行
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
ButtonFrame frame=new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}
class ButtonFrame extends JFrame
{
public ButtonFrame()
{
setTitle("ButtonTest");
setSize(W,H);
ButtonPanel panel=new ButtonPanel();
add(panel);

}
public static final int W=300;
public static final int H=200;
}
class ButtonPanel extends JPanel
{
public ButtonPanel()
{
makeButton("Yellow",Color.YELLOW);
makeButton("Blue",Color.BLUE);
makeButton("Red",Color.RED);
}
void makeButton(String name, Color backgroundColor)
{
JButton button=new JButton(name);
add(button);
ColorAction action=new ColorAction(backgroundColor);
button.addActionListener(action);
}
private class ColorAction implements ActionListener
{
public ColorAction(Color c)
{
backgroundColor=c;
}
public void actionPerformed(ActionEvent event)
{
setBackground(backgroundColor);
}
private Color backgroundColor;
}
}



这样改写后不能运行(我想用匿名内部类实现)
如下
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonTest {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
ButtonFrame frame=new ButtonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}

}
class ButtonFrame extends JFrame
{
public ButtonFrame()
{
setTitle("ButtonTest");
setSize(W,H);
ButtonPanel panel=new ButtonPanel();
add(panel);

}
public static final int W=300;
public static final int H=200;
}
class ButtonPanel extends JPanel
{
public ButtonPanel()
{
makeButton("Yellow",Color.YELLOW);
makeButton("Blue",Color.BLUE);
makeButton("Red",Color.RED);
}
void makeButton(String name,final Color backgoundColor)
{
JButton button=new JButton(name);
add(button);
button.addActionListener(new //匿名内部类
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
setBackground(backgroundColor);
}
});

}
private Color backgroundColor;
}



请各位高手指教!


----------------解决方案--------------------------------------------------------
拼写出错了。
void makeButton(String name,final Color backgoundColor)
{
JButton button=new JButton(name);
add(button);
button.addActionListener(new //匿名内部类
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
setBackground(backgroundColor);
}
});

}

----------------解决方案--------------------------------------------------------
又是一个不注重细节的人
----------------解决方案--------------------------------------------------------
谢谢!我以后注意!
----------------解决方案--------------------------------------------------------
  相关解决方案