【发布时间】:2013-07-04 04:17:50
【问题描述】:
我正在尝试打开一个文本文件并将其值添加到 String 变量中,然后在 JTextArea 中设置。无论我做什么,它总是在 textarea 中不返回任何内容。
我希望它像单击清除按钮时那样更改文本,但我想将其更改为它生成的 Test.txt 文件中的内容。
package texteditor;
import java.awt.FlowLayout;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class GUI extends JFrame {
//GUI Variables
private JButton save;
private JButton clear;
private JButton copy;
private JButton paste;
private JButton open;
private JTextArea textField;
private StringSelection stringSelection;
private Clipboard clipboard;
String textFieldWritable;
public GUI() {
super("Text Editor");
//Sets Layout
setLayout(new FlowLayout());
save = new JButton("Save");
add(save);
clear = new JButton("Clear");
add(clear);
open = new JButton("Open");
add(open);
textField = new JTextArea(10, 35);
add(textField);
handler handle = new handler();
save.addActionListener(handle);
clear.addActionListener(handle);
}
private class handler implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
if (event.getSource() == save) {
textFieldWritable = String.format("%s", textField.getText());
try {
FileWriter fileWrite = new FileWriter("Text.txt");
PrintWriter printWrite = new PrintWriter(fileWrite);
printWrite.println(textFieldWritable);
printWrite.close();
} catch (IOException e) {
JOptionPane.showMessageDialog(null,
"Error, File Already Exists!", "Error",
JOptionPane.ERROR_MESSAGE);
}
} else if (event.getSource() == clear) {
textField.setText("");
} else if (event.getSource() == open) {
try {
FileReader fileReader = new FileReader("Text.txt");
BufferedReader bufferedReader = new BufferedReader(fileReader);
String inputFile = "";
String textFieldReadable = bufferedReader.readLine();
while (textFieldReadable != null) {
inputFile += textFieldReadable;
textFieldReadable = bufferedReader.readLine();
}
System.out.println("inputFile");
} catch (FileNotFoundException ex) {
System.out.println("no such file exists");
} catch (IOException ex) {
System.out.println("unkownerror");
}
}
}
}
}
【问题讨论】:
-
我建议使用
JTextArea#read(Reader, Object)提供的内置功能 -
此外,在使用 readLine() 时,您会丢失结束行字符,因为 readLine() 会返回没有它们的文本。
标签: java windows swing io jtextarea