A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© First 中级黑马   /  2013-6-18 09:23  /  2476 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. butSrcs.addActionListener(new ActionListener() {

  2. @Override
  3. public void actionPerformed(ActionEvent e) {
  4. // TODO Auto-generated method stub
  5. fod = new FileDialog(myFrame, "open", FileDialog.LOAD);
  6. fod.setVisible(true);
  7. String dir = fod.getDirectory();
  8. String fileName = fod.getFile();
  9. if(dir==null||fileName==null)
  10. return;
  11. JTextField tf = new JTextField(30);//@1
  12. tf.setText(dir+fileName);
  13. tf.setEditable(false);
  14. srcs.add(tf.getText());

  15. JButton rm = new JButton("删除");//@2
  16. rm.addActionListener(new ActionListener() {

  17. @Override
  18. public void actionPerformed(ActionEvent e) {
  19. // TODO Auto-generated method stub
  20. JTextField tf = tf;//这里的tf 如何才能引用 @1 的 tf???
  21. JButton rm = rm;//这里的rm 如何引用 @2

  22. myFrame.remove(tf);
  23. myFrame.remove(rm);
  24. srcs.remove(tf.getText());
  25. }
  26. });
  27. myFrame.add(tf);
  28. myFrame.add(rm);
  29. myFrame.validate();
  30. myFrame.repaint();
  31. }
  32. });
复制代码

7 个回复

倒序浏览
方法中的内部类不能访问该方法的局部变量是因为:方法中声明内部类,目的只是由外部类来控制内部类的可见性,将一个类放到一个方法当中去定义的时候,那么就限定了这个类的使用范围只能在方法的内部,我们只是代码这样写而已,不要理解成为在这个方法内部有一个类,这个类是方法的一部分,一调这方法类执行什么什么的.. 不是的,我们只是代码这样写,目的是为了控制内部类的可见性,编译之后的结果,也会出现 外部类 和 内部类各自的字节码class文件,这就说明内部类是一个独立的个体,他们就是两个类而已,他们各自都有自己的成员变量和方法。那么这个在方法中声明的内部类里面当然不能访问该方法的局部变量了,他们就是各自单独的两个类,你在一个类里面可以通过该类引用访问他的成员变量或者方法,但是方法中内部声明的局部变量的作用域只是这个方法内部,你无法访问这个局部变量,根本访问不了。
回复 使用道具 举报
007诸葛亮 发表于 2013-6-18 09:47
方法中的内部类不能访问该方法的局部变量是因为:方法中声明内部类,目的只是由外部类来控制内部类的可见性 ...

非常感谢你的回答

但是,拜托,我问的是 如何引用同名的局部变量,不是能不能访问
还有就是,访问是可以的,只是我忘了加final了,想重新编译的,却发现没有编译了--


回复 使用道具 举报
滔哥 来自手机 黑马帝 2013-6-18 14:17:15
板凳
提问的时候详细描述下
回复 使用道具 举报
滔哥 来自手机 黑马帝 2013-6-18 14:17:15
报纸
提问的时候详细描述下
回复 使用道具 举报
滔哥 来自手机 黑马帝 2013-6-18 14:17:16
地板
提问的时候详细描述下
回复 使用道具 举报
First 中级黑马 2013-6-18 17:26:53
7#
滔哥 发表于 2013-6-18 14:17
提问的时候详细描述下

现在提问是不是没法编辑了??

问题的具体描述在代码里面了
回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马