【问题标题】:Reading a txt file in a Java GUI在 Java GUI 中读取 txt 文件
【发布时间】:2012-12-02 06:39:35
【问题描述】:

我想要做的就是显示一个 txt 文件的全部内容。我该怎么做呢?我假设我会将 JLabel 的文本设置为包含整个文件的字符串,但是如何将整个文件变成一个字符串?另外,这个txt文件在Eclipse的src文件夹下吗?

【问题讨论】:

    标签: java swing user-interface file-io jtextcomponent


    【解决方案1】:

    此代码用于在您的 Jtext 区域中显示选定的文件内容

          static void readin(String fn, JTextComponent pane) 
                  {
                 try 
                  {
                   FileReader fr = new FileReader(fn);
                   pane.read(fr, null);
                   fr.close();
                  }
                     catch (IOException e) 
                     {
                      System.err.println(e);
                     }
                  }
    

    选择文件

             String cwd = System.getProperty("user.dir");
             final JFileChooser jfc = new JFileChooser(cwd);
    
                JButton filebutton = new JButton("Choose");
                filebutton.addActionListener(new ActionListener() 
                {
                public void actionPerformed(ActionEvent e) 
                {
                    if (jfc.showOpenDialog(frame) !=JFileChooser.APPROVE_OPTION)
    
                            return;
                      File f = jfc.getSelectedFile();
    
    
    
                readin(f.toString(), textpane);
    
                      SwingUtilities.invokeLater(new Runnable() {
                        public void run() {
                            frame.setCursor(Cursor.
                                getPredefinedCursor(
                                Cursor.DEFAULT_CURSOR));
    
                        }
                    });
                }
            });
    

    【讨论】:

    • fr.close() 语句应该在 finally 块中。设置框架光标的部分如何与问题相关?
    • @Robin 这个问题与获取文件名有关,它是正确的,我的回答是正确的。
    • @Murali Robins 的建议不是讨论任何事情
    【解决方案2】:

    我想要做的就是显示一个 txt 文件的全部内容。如何 我会这样做吗?我假设我将设置文本 一个 JLabel 是一个包含整个文件的字符串,但是如何将整个文件变成一个字符串?

    您最好使用JTextArea 来执行此操作。也可以看看read()方法。

    txt 文件是否在 Eclipse 的 src 文件夹中?

    不。您可以从任何地方读取文件。 "Reading, Writing, and Creating Files" 上的教程将是一个很好的起点

    【讨论】:

      【解决方案3】:
      • 在项目的工作文件夹中创建文本文件
      • 逐行读取文本文件
      • 将行内容存储在stringBuilder变量中
      • 然后将下一行内容追加到stringBuilder变量
      • 然后将StringBuilder 变量的内容分配给JLabel 的文本属性

      但将整个文件的数据存储到JLabel 中,使用JTextArea 或任何其他文本容器不是一个好主意。

      像这样阅读你的文件:

      BufferedReader br = new BufferedReader(new FileReader("file.txt"));
      try {
          StringBuilder sb = new StringBuilder();
          String line = br.readLine();
      
          while (line != null) {
              sb.append(line);
             line = br.readLine();
          }
          String everything = sb.toString();
      } finally {
          br.close();
      }
      

      现在将所有内容的值分配给JLabelJTextArea

      JLabel1.text=everything;
      

      【讨论】:

      • 如果出现JLabel,“\n”将如何提供帮助?而且我不知道JLabel 有一个受保护的text 字段(似乎javadoc 也没有意识到这一点)
      【解决方案4】:
      1. 使用java.io 打开文件流。
      2. 按行或字节从文件中读取内容。
      3. 将内容附加到StringBuilderStringBuffer
      4. StringBuilderStringBuffer 设置为JLable.text

      但我建议使用JTextArea..

      你不需要把这个文件放在 src 文件夹中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多