Java 如何使用JList中的文件填充JTextArea

Java 如何使用JList中的文件填充JTextArea,java,swing,file-io,textarea,jlist,Java,Swing,File Io,Textarea,Jlist,我正在创建一个应用程序,该应用程序从所选目录中获取.java和.class文件的列表,并将它们放在JList中。我正在使用Netbeans 7.1.2 我在JList中显示了我想要的所有文件,但我似乎无法在jTextArea中打开所选的.java文件 我需要从JList获取文件以将其传递到JTextArea,但它不工作 try { FileReader reader= new FileReader( jlist.getSelectedValue() );

我正在创建一个应用程序,该应用程序从所选目录中获取.java和.class文件的列表,并将它们放在JList中。我正在使用Netbeans 7.1.2

我在JList中显示了我想要的所有文件,但我似乎无法在jTextArea中打开所选的.java文件

我需要从JList获取文件以将其传递到JTextArea,但它不工作

     try
     {
         FileReader reader= new FileReader( jlist.getSelectedValue() );
         BufferedReader br = new BufferedReader( reader);
         textarea.read( br );
         br.close();
         textarea.requestFocus();               
     } 
     catch(Exception e2) {}

有人看到我哪里出了问题吗?

只要你向JList(一个可视组件)中添加了一些内容,它就不再是一个对象列表了。你只需要有一个索引为0到n的数组,你可以从中选择,但是里面什么都没有。您可以做的是创建一个文件数组(新文件[]),并将所有文件存储在其中,以便您可以随时访问这些文件。

一旦您向JList(可视组件)添加了内容,它就不再是对象列表了。你只需要有一个索引为0到n的数组,你可以从中选择,但是里面什么都没有。您可以做的是创建一个文件数组(新文件[]),并将所有文件存储在其中,以便您可以随时访问它们

textarea.write( bw );
这个编译吗?write方法似乎是用于将textarea的内容写入文件,而不是相反

此外,如果出现问题,请确保不要捕获异常并忽略它。异常跟踪对于理解出了什么问题非常有帮助

这个编译吗?write方法似乎是用于将textarea的内容写入文件,而不是相反


此外,如果出现问题,请确保不要捕获异常并忽略它。异常跟踪对于理解出错的原因非常有帮助。

如果要将文件读入JTextArea,则需要使用传入BufferedFileReader的
读取(…)
方法,而不是
写入(…)
方法。这对您来说应该是有意义的,因为您的目标是读取,而不是写入。

如果要将文件读入JTextArea,您需要使用
read(…)
方法传入BufferedFileReader,而不是
write(…)
方法。这对你来说应该是有意义的,因为你的目标是阅读,而不是写作。

如果你遇到问题,你应该显示/记录你的异常,而不是静静地吞咽它们。您的代码可能会遇到一个问题,该问题与一个有用的异常相关,但在编写告诉您异常的代码之前,您不会知道

您可以从以下内容开始:

try
{
     File file = (File)jlist.getSelectedValue();
     FileReader reader = new FileReader( file );
     textarea.read( br );
     br.close();
     textarea.requestFocus(); 
}
catch(Exception e)
{
    JOptionPane.showMessageDialog(null, e.toString());
}

如果您遇到问题,您应该显示/记录您的异常,而不是静静地吞咽它们。您的代码可能会遇到一个问题,该问题与一个有用的异常相关,但在编写告诉您异常的代码之前,您不会知道

您可以从以下内容开始:

try
{
     File file = (File)jlist.getSelectedValue();
     FileReader reader = new FileReader( file );
     textarea.read( br );
     br.close();
     textarea.requestFocus(); 
}
catch(Exception e)
{
    JOptionPane.showMessageDialog(null, e.toString());
}


我已经编辑了我的代码,你是说我必须这么做吗?是的,但不要调用
textarea.setText(“”
),否则你会删除刚刚加载到
JTextArea
:)@newSpringer:试试看会发生什么。但正如其他人告诉你的,不要忽视例外情况,否则你会瞎飞。@newSpringer:是的,我就知道你能做到!祝贺我已经编辑了我的代码,你是说我必须这么做吗?是的,但不要调用
textarea.setText(“”
),否则你会删除刚刚加载到
JTextArea
:)@newSpringer:试试看会发生什么。但正如其他人告诉你的,不要忽视例外情况,否则你会瞎飞。@newSpringer:是的,我就知道你能做到!祝贺我让它在我的代码中打印出一个异常,但我没有将它添加到此代码中,因为我只是想显示它在try-catch中。错误是因为读取器试图读取来自jlist的对象,而不是文件。。。不知道为什么我已将列表添加到JLIST,您是否看到打印的错误消息?错误消息的确切文本是什么?你能复制并粘贴它吗?请尝试将
getSelectedValue()
的返回值强制转换为
文件
(我在回答中显示了这一点)。修复了我的另一个错误,刚刚得到了这个错误“java.io.FileNotFoundException:null(系统找不到指定的文件)”,这可能意味着jlist.getSelectedValue()正在返回null。在运行尝试打开所选项目的方法之前,请确保单击以选择列表中的某个内容。我让它在我的代码中打印出一个异常,但我没有将其添加到此代码中,因为我只是想显示它在try catch中。错误是因为读取器试图读取来自jlist的对象,而不是文件。。。不知道为什么我已将列表添加到JLIST,您是否看到打印的错误消息?错误消息的确切文本是什么?你能复制并粘贴它吗?请尝试将
getSelectedValue()
的返回值强制转换为
文件
(我在回答中显示了这一点)。修复了我的另一个错误,刚刚得到了这个错误“java.io.FileNotFoundException:null(系统找不到指定的文件)”,这可能意味着jlist.getSelectedValue()正在返回null。在运行尝试打开所选项目的方法之前,请确保单击以选择列表中的某个内容。要更快获得更好的帮助,请发布。要更快获得更好的帮助,请发布。