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

我的程序是在面板中添加2个按钮,当单击相应的按钮时,改变背景颜色,我想用ColorAction这个类实现监听但是总是提示,没有为类型 ColorAction 定义方法 setBackground(Color),不过我用内部类实现了,请高手指教!

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameTest {

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

}
class Frame extends JFrame
{
public Frame()
{
setTitle("FrameTest");
setSize(W,H);
FramePanel panel=new FramePanel();
add(panel);
}
private static final long serialVersionUID=20070609;
public static final int W=300;
public static final int H=200;
}
class FramePanel extends JPanel
{
public FramePanel()
{
JButton yellow=new JButton("yellow");
JButton green=new JButton("green");
add(yellow);
add(green);
ColorAction yellowAction=new ColorAction(Color.YELLOW);
ColorAction greenAction=new ColorAction(Color.GREEN);
yellow.addActionListener(yellowAction);
green.addActionListener(greenAction);
}
private static final long serialVersionUID=20070609;
}
class ColorAction implements ActionListener
{
public ColorAction(Color c)
{
backgroundColor=c;
}
public void actionPerformed(ActionEvent event)
{
setBackground(backgroundColor); //没有为类型 ColorAction 定义方法 setBackground(Color)
}
private Color backgroundColor;
}

搜索更多相关主题的帖子: import awt args java public 
2007-06-09 16:24
嶄ぎ儱
Rank: 1
等 级:新手上路
帖 子:93
专家分:0
注 册:2007-4-21
收藏
得分:0 
setBackground(backgroundColor)这个方法你没有定义. 你说你定义了,定义在哪里啊?

别人不给你机会,自己去创造机会.
2007-06-09 17:44
pity1115
Rank: 1
等 级:新手上路
威 望:2
帖 子:184
专家分:0
注 册:2006-9-15
收藏
得分:0 
把class ColorAction implements ActionListener定义为class FramePanel extends JPanel的内部类。

2007-06-09 18:43
菜鸟也疯狂
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-3-20
收藏
得分:0 
楼上的正解。

2007-06-09 22:02
lanshetou
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-6-1
收藏
得分:0 
为什么把class ColorAction implements ActionListener定义为class FramePanel extends JPanel的内部类就行呢,我知道那样可以的,但是我不知道为什么可以。
请您讲明白些!谢谢!

2007-06-09 22:04
菜鸟也疯狂
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-3-20
收藏
得分:0 
因为JPanel类里面有这个方法。

2007-06-09 22:08
lanshetou
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-6-1
收藏
得分:0 
您的意思是这个方法产生了二异性吧?

2007-06-09 22:15
菜鸟也疯狂
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2007-3-20
收藏
得分:0 
没有啊。如果照你这样写的话,肯定会报错啊,因为你的ColorAction类里面没有定义setBackground()方法,那你这样调用它肯定会报错的啊。但是如果你把它放到class FramePanel extends JPanel里面去作为它的内部类的话,就可以使用JPanel里面的setBackground()方法了。

2007-06-09 22:32
lanshetou
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2007-6-1
收藏
得分:0 
哦,知道了,非常谢谢!

2007-06-09 22:33
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
楼主的编码风格不好

你怎么能声明一个Frame类呢?

自己写代码的时候,最好不好命名和系统类库相同的类

可惜不是你,陪我到最后
2007-06-11 09:11
快速回复:使用不同的类时的问题
数据加载中...
 
   



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

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