情况是这样的,我定义两个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);
}
}
});