【问题标题】:How to import a Text file content to a JTextArea in a Java application?如何将文本文件内容导入 Java 应用程序中的 JTextArea?
【发布时间】:2011-10-25 09:41:52
【问题描述】:

如何使用 JFileChooser 将文本文件内容导入 Java 应用程序中的 JTextArea?

【问题讨论】:

  • 你一定是军人,指挥不错。无论如何,您尝试过什么?看起来你根本没有尝试过。
  • @mwdar:下次自己尝试,并在问题中包含有问题的代码。

标签: java swing file-io import jtextarea


【解决方案1】:

应该类似于以下代码:

JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(null); //replace null with your swing container
File file;
if(returnVal == JFileChooser.APPROVE_OPTION)     
  file = chooser.getSelectedFile();    
}

JTextArea text = new JTextArea();
BufferedReader in = new BufferedReader(new FileReader(file));
String line = in.readLine();
while(line != null){
  text.append(line + "\n");
  line = in.readLine();
}

卢卡

【讨论】:

  • -1,是的,我知道这行得通。但我倾向于否决重新发明轮子的解决方案。所有文本组件都支持应该使用的 read(...) 方法。
  • @camickr 我同意我们不应该重新发明轮子......无论如何我没有找到你的建议,我不明白为什么你只投了我的票,而还有其他两个在不发布代码的情况下回答提出相同的方法。
  • 我的建议是使用 read(..) 方法。我投了反对票,因为这是公认的答案,我不希望搜索论坛并找到此答案的人使用它。
【解决方案2】:

import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import java.io.File;

class DocumentViewer {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                final JFrame f = new JFrame("Document Viewer");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                final JFileChooser fileChooser = new JFileChooser();

                JPanel gui = new JPanel(new BorderLayout());

                final JEditorPane document = new JEditorPane();
                gui.add(new JScrollPane(document), BorderLayout.CENTER);

                JButton open = new JButton("Open");
                open.addActionListener( new ActionListener() {
                    public void actionPerformed(ActionEvent ae) {
                        int result = fileChooser.showOpenDialog(f);
                        if (result==JFileChooser.APPROVE_OPTION) {
                            File file = fileChooser.getSelectedFile();
                            try {
                                document.setPage(file.toURI().toURL());
                            } catch(Exception e) {
                                e.printStackTrace();
                            }
                        }
                    }
                });
                gui.add(open, BorderLayout.NORTH);

                f.setContentPane(gui);
                f.pack();
                f.setSize(400,300);
                f.setLocationByPlatform(true);

                f.setVisible(true);
            }
        });
    }
}

【讨论】:

    【解决方案3】:

    要将文件的内容导入 JTextArea,您只需按照以下步骤操作!

    1. 创建一个框架并向其中添加一个 JTextArea。
    2. 您声明并初始化了一个 JFileChooser。
    3. 您将侦听器添加到 JFileChooser。
    4. 在您的 actionPerformed 中,您应该获取所选文件并将其传递给将读取此文件的方法(请参阅下面的注意事项)。
    5. 在该方法中,您打开文件阅读器并逐行读取文件的内容。执行此操作时,将每一行附加到 JTextArea。
    6. 当您到达文件末尾时,关闭文件阅读器。
    7. 运行程序,一切顺利。

    以上步骤足以完成您的任务。但是,当您尝试时,我会编辑我的帖子并添加一个可能的解决方案。

    注意:您必须注意,当您使用 JFileChooser 选择文件时,它会返回 File 类型的 Object。然后您应该使用 File 类提供的getName() 方法来获取文件的名称。

    可能有帮助的链接!
    JFileChooser
    File
    Java tutorials on how to use the JFileChooser

    【讨论】:

      【解决方案4】:

      确定从 FileChooser 给出的文件名,将文件的内容读入字符串(例如,使用 StringBuilder),使用 JTextField#setText(String) 将 JTextArea 的内容设置为缓冲区的内容。

      【讨论】:

        【解决方案5】:
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
            JFileChooser jf = new JFileChooser();
             final JEditorPane document = new JEditorPane();
            int returnval=jf.showDialog(this, null);
            File file = null;
            if(returnval == JFileChooser.APPROVE_OPTION)     
             file = jf.getSelectedFile(); 
            String str ;
            try {
                byte bt[]= Files.readAllBytes(file.toPath());   
                str=new String(bt,"UTF-8");
                System.out.println(str);
            } catch (IOException ex) {
                Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex);
            }
        }  
        

        【讨论】:

          猜你喜欢
          • 2012-05-18
          • 2011-06-16
          • 2011-09-15
          • 2017-03-08
          • 1970-01-01
          • 1970-01-01
          • 2012-11-06
          • 2013-08-08
          相关资源
          最近更新 更多