【问题标题】:How to read multiple files one by one and display in the same text area in java swing?java swing中如何一个一个读取多个文件并显示在同一个文本区域?
【发布时间】:2019-08-01 13:13:06
【问题描述】:

我正在为一项作业编写代码。我正在使用 java swing 来做到这一点。我需要知道应该如何更改我的代码以在文本区域中显示多个文件内容。

我尝试了一些代码。我添加了一个 jButton 和一个 jTextArea 来读取多个文件。我已经对 setMultiSelectionEnabled(true) 和 getSelectedFiles() 有所了解。

//This is my code inside the jButton

    JFileChooser chooser = new JFileChooser();
    chooser.setMultiSelectionEnabled(true);
    chooser.showOpenDialog(null);
    File files = chooser.getSelectedFiles();
    String filename = files.getAbsolutePath();


    try{
       FileReader reader = new FileReader(filename);
       BufferedReader br = new BufferedReader(reader);
       jTextArea1.read(br, null);

       br.close();
       jTextArea1.requestFocus();
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(null, e);
    }

我只能将一个文件内容放入我的文本区域。请帮我开发这个。谢谢!

【问题讨论】:

  • 为什么,在 same 文本区域?您是否考虑过使用JTabbedPane,每个选项卡有一个文件/文本区域?
  • 因为我需要从所有选定的文件中获取特定的字数。例如:如果我选择了 3 个 java 类,我需要计算有多少 if, while,extends... 同样。
  • 那么为什么这会阻止你拥有多个标签呢?您只需创建一个循环来读取每个选项卡上每个文本区域中的数据。无论如何,您都有原始问题的答案。

标签: java swing file-io jtextarea jfilechooser


【解决方案1】:

如果您想在单个文本区域中放置多个文件,则不能使用read(...) 方法。

相反,您需要逐行读取每个文件,并使用append(...) 方法将文本添加到文本区域。

【讨论】:

  • 我试过这个。 jTextArea.append(selectedFiles.getName()) 只显示选择的文件名。但是如何获取文件的内容。我对数组、列表和 BufferedReader 不太了解。
  • 我们不是来向你解释 Java 的。如果您不知道如何进行 I/O,那么是时候阅读您的教科书了。从文件中读取数据是基本的编程,每本教科书都有介绍。或者你可以看看基本的Java Tutorial。或者您可以在论坛中搜索使用BufferedReader 的代码示例。这就是论坛的目的。如果您不知道如何使用方法,请查找使用该方法的示例。
【解决方案2】:

试试这个代码:

  JFileChooser chooser = new JFileChooser();
        chooser.setMultiSelectionEnabled(true);
        chooser.showOpenDialog(null);
        File[] files = chooser.getSelectedFiles();
       // String filename = files.getAbsolutePath();



           for(File f:files){
           FileReader reader = new FileReader(f);
           BufferedReader br = new BufferedReader(reader);
           while( (line = br.readLine()) != null ) {
                jTextArea1.append(line);
           }

           br.close();
           //jTextArea1.requestFocus();
         }

【讨论】:

  • 我做了一些小改动。它工作正常。非常感谢您的回答。应该是 File[] files = chooser.getSelectedFiles();
猜你喜欢
  • 2016-11-16
  • 2014-06-06
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多