【发布时间】:2018-03-26 15:22:20
【问题描述】:
我是一名学生,当我将我的程序输入到具有我的 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 + "'");
}
}
}
【问题讨论】:
-
我没有看到任何 GUI 代码。如果您使用的是 JTextField,您可能会不小心将文本替换为代码读取的最后一个内容。在 GUI 组件中附加文本的最简单方法是将当前文本保存到缓冲区(例如
String对象),然后将新文本附加到该缓冲区,然后用缓冲区替换组件中的文本。 -
能否请您发布完整的代码?从目前的情况来看,无法解释您所描述的行为。
-
对 GUI 来说是的(起作用的那个):
-
已添加到问题中
标签: java swing user-interface bufferedreader filereader