| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1096 人关注过本帖
标题:监听中包含监听怎么解决?
只看楼主 加入收藏
卷心菜
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-6-25
收藏
 问题点数:0 回复次数:9 
监听中包含监听怎么解决?

情况是这样的,我定义两个FRAM,f1是登陆界面,上面有一个按钮b,点击后进入f2界面.
这时要监听按钮b,它要做的事情是
1.把f1上输入的内容以单选按钮的形式放到f2上 <==已实现
2.查询表,把表里的名单也以单选按钮的样子放到f2上 <==已实现
3.监听每个单选按钮,当选种某个按钮,把其内容放到label中 <===出现问题
提示错误:
"CHAT.java": addFocusListener(java.awt.event.FocusListener) in java.awt.Component cannot be applied to (<anonymous class of java.awt.event.ActionListener>) at line 116, column 15

当我把单选按钮的监听拿出来,就不会有这个错误,但是有以外一个错误,提示空指针,因为程序刚开始运行的时候f2还没显示出来,单选按钮自然不存在,可是已经监听,不可用.
如果我加个判断
if( f.isShowing())
{
单选择按钮监听
}
这样第一次编译通过了,可是当进入f2的时候,这条语句就不会在执行,所以还是失败.

下面是B的监听代码,红色字是出错部分,有些变量我设全局的这里没有.
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

n = name.getText().trim();
if (n.length() != 0) {
f0.setVisible(false);
f0.dispose();
all = new Checkbox("所有人", nlst, true);
all.getLabel();
n1 = new Checkbox(n, nlst, false);

n1.getLabel();
pr.add(all); //显示“所有人”
pr.add(n1); //在系统中显示自己
all.addFocusListener(this);
n1.addFocusListener(this);
//连接数据库,添加自己信息及显示有所人
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con = DriverManager.getConnection("jdbc:odbc:namelst");
Statement state = con.createStatement();
state.executeUpdate("INSERT INTO namelst VALUES('" + n +
"','127.0.0.1')");
ResultSet rs = state.executeQuery("SELECT * FROM namelst");
while (rs.next()) {
String u_id = rs.getString("user_id");
if (!n.equals(u_id)) {
Checkbox u_lst=new Checkbox(u_id,nlst,false);
pr.add(u_lst);
}
}
}
catch (Exception d) {
System.out.println("Exception:" + d.getMessage());
}

lab1.setText(n);

f.setVisible(true);
}
}
});

搜索更多相关主题的帖子: 监听 
2006-06-25 17:10
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你当然会错了,你在 all.addFocusListener(this);
n1.addFocusListener(this);

都用了this这个关键字,这个字的意思是代表当前类的对象
可是你的类是匿名内部类,并且这个类实现的是ActionListener的接口.
你这个时候应该把参数传对来
如果你是外部类实现了FocusListener的话可以这样写
all.addFocusListener(CHAT.this);
如果你的CHAT类实现了FocusListener

可惜不是你,陪我到最后
2006-06-25 17:13
卷心菜
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-6-25
收藏
得分:0 

非常,非常感谢!
关于监听的问题已经困扰我一下午了.
还有个小问题,label怎么才能大呢?我把它放在Panel (默认布局)中,Panel放在f2的南布,label比较多大概10个字,就放不下了,可是label似乎没有改变大小的方法.
该怎么办?

2006-06-25 17:18
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
label大有什么用,你的外面的面板也要大啊
你直接setFont就可以变大了

可惜不是你,陪我到最后
2006-06-25 17:20
卷心菜
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-6-25
收藏
得分:0 
我发现定义的时候 Label lab2 = new Label(" ");
这样就大了,后来修改的问题就能放下了
不过那样定义真是很难看
2006-06-25 17:24
卷心菜
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-6-25
收藏
得分:0 

面板setFont吗?
setFont()里面好象不是填数字的,要什么参数?

2006-06-25 17:27
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
不需要这样定义的,直接定义JLabel lab=new JLabel();就可以了
还有,现在做GUI界面最好不要用AWT里面的东西了,最好是用swing包里的东西

可惜不是你,陪我到最后
2006-06-25 17:27
水影月圆
Rank: 4
等 级:贵宾
威 望:11
帖 子:738
专家分:0
注 册:2005-8-2
收藏
得分:0 

("这里是让你放 你Lable上所显示的字的 ") 所以你的Lable的大小会跟着字的长度变的


子非鱼,安知鱼之江湖?子非我,安知我之功夫 http://20681.
2006-06-25 17:27
卷心菜
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-6-25
收藏
得分:0 

非常谢谢大家的帮助:)
解决问题真的好开心
我学的东西太浅了,而且练习少,东西记得不牢,还要慢慢来.

2006-06-25 17:33
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

欢迎常来来论坛,但是不要重复发帖


可惜不是你,陪我到最后
2006-06-25 17:43
快速回复:监听中包含监听怎么解决?
数据加载中...
 
   



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

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