我在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();
}
}
});
答案 0 :(得分:4)
查找'变量范围/可见性'。由于括号内的file
属性是声明,因此只有该代码块中的代码才能访问它。
其他说明/提示:
ReturnValue!= ..
继续其余部分没有多大意义,那么该方法的其余部分也应该在括号内。File
,代码就会将EDT集中在一起。不要阻止EDT(事件调度线程) - 当发生这种情况时,GUI将“冻结”。而不是调用Thread.sleep(n)
为重复任务实现Swing Timer
或为长时间运行的任务实现SwingWorker
。有关详细信息,请参阅Concurrency in Swing。WritingArea
是JTextComponent
,则可以更轻松地加载数据。答案 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();
}
}
}
});