[英]Reading mutiple lines from a file in a Java GUI
我是一名學生,當我將其輸入具有GUI的程序時,我的程序很難讀取文本文件中的所有行,它將僅顯示最后一行。 我在控制台上運行它,效果很好,並顯示了每一行。 有人可以幫忙嗎?
這是在控制台中工作的代碼
String parent = "D:\\Online Class\\Java Programs\\Final Project\\Tests\\";
Scanner fileInput = new Scanner(System.in);
System.out.print("Enter Name of File: ");
String name= fileInput.nextLine();
String extension = ".txt";
String fileName = (parent+name+extension);
//reads file and displays it
String line = null;
try{
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) !=null)
{
System.out.println(line);
}
bufferedReader.close();
}
catch(FileNotFoundException ex)
{
System.out.println("Unable to open file '" + fileName + "'");
}
catch(IOException ex)
{
System.out.println("Error Reading file '"+fileName + "'");
}
}
這是當我使用GUI將其輸入程序時無法使用的代碼
//search for file (must be in same folder as program)
String parent = "D:\\Online Class\\Java Programs\\Final Project\\Tests\\";
String fileInput = taskNameTextField.getText();
String name = fileInput;
String extension = ".txt";
String fileName = (parent+name+extension);
//reads file and displays it
String line = null;
try{
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) !=null)
{
System.out.println(line);
}
bufferedReader.close();
}
catch(FileNotFoundException ex)
{
System.out.println("Unable to open file '" + fileName + "'");
}
catch(IOException ex)
{
System.out.println("Error Reading file '"+fileName + "'");
}
}
這是正在起作用的GUI的完整代碼:
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.File;
import java.io.*;
import java.util.Scanner;
public class readGUItest implements ActionListener
{
JFrame window = new JFrame("Task");
JTextField taskNameTextField = new JTextField();
JTextArea DescriptTextArea = new JTextArea();
JLabel taskNameLabel = new JLabel("Task Name");
JLabel descriptLable = new JLabel("Description");
JButton save = new JButton("save");
public static void main(String[] args)throws IOException
{
readGUItest tGt = new readGUItest();
}
public readGUItest()
{
window.add(taskNameLabel);
window.add(taskNameTextField);
window.add(descriptLable);
window.add(DescriptTextArea);
window.add(save);
save.addActionListener(this);
window.setSize(new Dimension(200,300));
window.setLayout(new GridLayout(3,3));
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
public void actionPerformed(ActionEvent event)
{
//search for file (must be in same folder as program)
String parent = "D:\\Online Class\\Java Programs\\Final Project\\Tests\\";
String fileInput = taskNameTextField.getText();
String name = fileInput;
String extension = ".txt";
String fileName = (parent+name+extension);
String line = null;
try{
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader);
while((line = bufferedReader.readLine()) !=null)
{
DescriptTextArea.setText(line);
}
bufferedReader.close();
}
catch(FileNotFoundException ex)
{
DescriptTextArea.setText("Unable to open file '" + fileName + "'");
}
catch(IOException ex)
{
DescriptTextArea.setText("Error Reading file '"+fileName + "'");
}
}
}
您正在DescriptTextArea
上使用setText
,它將替換小部件的先前內容。
您寧願這樣使用JTextField
的文檔:
DescriptTextArea.getDocument().insertString(
DescriptTextArea.getDocument().getEndPosition().getOffset(),
line + System.getProperty("line.separator"),
null);
這將在文檔末尾插入新行,並追加行分隔符。
JTextArea具有默認情況下以純文本格式讀取文件的方法,這應該對您有用
Reader fileReader = new FileReader(fileName);
DescriptTextArea.read(fileReader, fileName);
http://www.java2s.com/Code/JavaAPI/javax.swing/JTextAreareadReaderinObjectdesc.htm
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.