Java程序错误:找不到符号文件

时间:2013-12-27 13:37:04

标签: java swing file-io jtextarea jfilechooser

我在java中编写代码以在JTextArea中显示文本文件。任何人都可以告诉我这段代码有什么问题。它说找不到符号文件..

FOpen.addActionListener(new ActionListener()
    {
        public void actionPerformed(ActionEvent ae)
        {
            final JFileChooser FileDialog = new JFileChooser();
            int ReturnValue=FileDialog.showOpenDialog(null);

            if(ReturnValue==JFileChooser.APPROVE_OPTION)
            {
                File file = FileDialog.getSelectedFile(); 
            }
            BufferedReader in = new BufferedReader(new FileReader(file));
            String line = in.readLine();    
            while(line!=null)
            {
                WritingArea.append(line+"\n");
                line=in.readLine();
            }
        }
    }); 

2 个答案:

答案 0 :(得分:4)

查找'变量范围/可见性'。由于括号内的file属性是声明,因此只有该代码块中的代码才能访问它。

其他说明/提示:

  • 如果ReturnValue!= ..继续其余部分没有多大意义,那么该方法的其余部分也应该在括号内。
  • 只要加载File,代码就会将EDT集中在一起。不要阻止EDT(事件调度线程) - 当发生这种情况时,GUI将“冻结”。而不是调用Thread.sleep(n)为重复任务实现Swing Timer或为长时间运行的任务实现SwingWorker。有关详细信息,请参阅Concurrency in Swing
  • 请了解课程,方法和方法的常见Java naming conventions(特别是用于名称的情况)属性名称&一贯地使用它们。
  • 如果WritingAreaJTextComponent,则可以更轻松地加载数据。
  • 始终复制/粘贴错误&异常输出。
  • 为了更好地提供帮助,请发布SSCCE

答案 1 :(得分:2)

你真的需要了解范围。目前,File对象封装在if块的范围内。如果要在其他任何位置使用该File对象,则不允许使用该对象。因此,将所有内容放入if块,它们将与File对象在同一范围内

FOpen.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent ae)
    {
        final JFileChooser FileDialog = new JFileChooser();
        int ReturnValue=FileDialog.showOpenDialog(null);

        if(ReturnValue==JFileChooser.APPROVE_OPTION)
        {
            File file = FileDialog.getSelectedFile(); 
            BufferedReader in = new BufferedReader(new FileReader(file));
            String line = in.readLine(); 

            while(line!=null)
            {
                WritingArea.append(line+"\n");
                line=in.readLine();
            }
        }  
    }
});