java在一个JButton中创建的对象为什么在另一个JButton无法使用

JButtonbtnReadFile=newJButton("readfile");btnReadFile.addActionListener(newActionList... JButton btnReadFile = new JButton("read file");
btnReadFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
InputStream is=null;
try {
is=new FileInputStream("D:/src/Friend.txt");
//List list = new ArrayList();
InputStreamReader isr = new InputStreamReader(is,"GBK");
BufferedReader bfReader=new BufferedReader(isr);
String line=null;
bfReader.skip(1);//跳过第一行因为第一行为标题行
line=bfReader.readLine();
int i=0;
while((line=bfReader.readLine())!=null){
String[] data=line.split(" ");
Friend[] f=new Friend[50];
f[i].SetNum(data[0]);
f[i].SetNane(data[1]);
f[i].SetSex(data[2]);
f[i].SetBirthday(data[3]);
f[i].SetPhoneNum1(data[4]);
f[i].SetPhoneNum2(data[5]);
f[i].SetPhoneNum3(data[6]);
f[i].SetAdd(data[7]);
f[i].SetGroup(data[8]);
i++;
//f[i].ShowFriendInfo();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});

JButton btnShowF = new JButton("show f1");
btnShowF.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

f[i].ShowFriendInfo();//这个地方报错 意思是f这个变量未定义
}
});
展开
 我来答
百度网友080b03f
2015-03-18 · TA获得超过463个赞
知道小有建树答主
回答量:381
采纳率:100%
帮助的人:283万
展开全部
f是btnReadFile监听器类创建的变量,作用域仅限于此类,怎么能用于btnShowF的监听器类呢?
要想共享变量,需要把Friend[] f 定义在

JButton btnReadFile = new JButton("read file");

之后(第二行),
可能需要定义为:
final Friend[] f=new Friend[50];

不过这只是示例,设计并不好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郑先森zp
2015-03-18
知道答主
回答量:5
采纳率:0%
帮助的人:6198
展开全部
你的f定义在try里面了,定义在try里面就属于局部变量了,出去后就无效了,当然就变成未定义了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
白菜一颗
2015-03-18 · TA获得超过8916个赞
知道大有可为答主
回答量:3260
采纳率:69%
帮助的人:3735万
展开全部
你的f是在循环内部建议的属于局部变量,只有在当次循环才有效,出了那次循环就无效了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式