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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 沈文杰 中级黑马   /  2013-2-4 16:03  /  1611 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 沈文杰 于 2013-2-10 20:23 编辑

这是毕老师视频GUI视频中用Menu做一个类似记事本小程序中对于保存的监听器中代码的一部分,
if(file==null)
        {
          saveDir.setVisible(true);
         
          String dirPath = saveDir.getDirectory();
          String dirFile = saveDir.getFile();
          if(dirPath==null||dirFile==null)
           return ;
          file = new File(dirPath,dirFile);
        }
        
        try
        {
          BufferedWriter bw = new BufferedWriter(new FileWriter(file));
         
          String text = ta.getText();
         
          bw.write(text);
         
          bw.close();
        }
我想问下:这个if判断的file对象时,没有调用TextArea的方法啊,只在前面定义过一次
private File file;那么file 不是一直为空么?

5 个回复

倒序浏览
来个高手解答一下啊....
回复 使用道具 举报
在if判断到file为null时,会进入if代码块,在代码块里面有为file赋值的语句 file = new File(dirPath,dirFile);
回复 使用道具 举报
黄锦成 发表于 2013-2-6 14:36
在if判断到file为null时,会进入if代码块,在代码块里面有为file赋值的语句 file = new File(dirPath,dirFi ...

if(file==null)
        {
          saveDir.setVisible(true);

        }
try....你说的是为空的情况。
能讲下如果是file不为空,这个不为空的情况是怎么判断的,
我们没有获取过file,从什么地方知道file不为空??
回复 使用道具 举报
要想执行下面的语句,必须有个file来进行写入。第一次监听到事件的时候,file肯定是null的,因为只在前面定义而没有new出来,这是后进入if判断语句
  1. saveDir.setVisible(true);
  2.          
  3.           String dirPath = saveDir.getDirectory();
  4.           String dirFile = saveDir.getFile();
  5.           if(dirPath==null||dirFile==null)
  6.            return ;
  7.           file = new File(dirPath,dirFile);
复制代码
这个语句显示一个保存界面,然后根据用户选择的dirPath和dirFile来new出一个file实例: file = new File(dirPath,dirFile)

当第二次监听到事件的时候,由于第一次已经选择了文件保存路径,file已经实例化过了,这时候就不再进入if语句,直接进入下面的try语句。


所以这个file为不为空,实际上就是第一次执行这段监听代码的时候为空,第二次不为空。
回复 使用道具 举报
蒋立辉 发表于 2013-2-7 19:52
要想执行下面的语句,必须有个file来进行写入。第一次监听到事件的时候,file肯定是null的,因为只在前面定 ...

噢噢,谢谢哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马