| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 359 人关注过本帖
标题:关于事件处理的一个问题?
取消只看楼主 加入收藏
lanshetou
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-6-1
结帖率:0
收藏
 问题点数:0 回复次数:1 
关于事件处理的一个问题?

我的程序是在面板中添加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;
}



请各位高手指教!

2007-06-08 18:32
lanshetou
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-6-1
收藏
得分:0 
谢谢!我以后注意!

2007-06-08 19:15
快速回复:关于事件处理的一个问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041754 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved