2012-12-02 199 views
0

我想要做的就是顯示txt文件的全部內容。我會如何去做這件事?我假設我將JLabel的文本設置爲包含整個文件的字符串,但是如何將整個文件轉換爲字符串?另外,txt文件是否在Eclipse的src文件夾中?在Java GUI中讀取txt文件

回答

2
  • 在項目的工作文件夾中創建的文本文件
  • 閱讀文本文件一行一行
  • 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; 
+1

而如何將「\ n」幫助了'JLabel'的情況下?我沒有意識到'JLabel'有一個受保護的'text'字段(似乎javadoc也沒有意識到這一點) – Robin

3

所有我想要做的是顯示一個txt文件的全部內容。 如何去做這件事?我假設我將 的文本設置爲一個包含整個文件的字符串,但是如何將整個文件轉換爲字符串?

你會更好的使用JTextArea來做到這一點。你也可以看看read()方法。

是否將txt文件放在Eclipse的src文件夾中?

沒有。你可以從任何地方讀取文件。 "Reading, Writing, and Creating Files"教程將是一個很好的開始

1
  1. 使用java.io打開文件流。
  2. 從文件中按行或字節讀取內容。
  3. 追加內容StringBuilderStringBuffer
  4. 設置StringBuilderStringBufferJLable.text

但我建議使用JTextArea ..

你不需要把這個文件在src文件夾中。

4

這段代碼在你顯示所選文件的內容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)); 

        } 
       }); 
      } 
     }); 
+0

'fr.close()'語句應該在finally塊中。那個框架的光標與問題相關的部分又如何? – Robin

+0

@Robin這個問題與獲取文件名有關,我的回答是正確的。 – Murali

+1

@Murali羅賓斯的建議不是關於任何事情 – mKorbel