我想创建一个更像记事本的程序。当您在 JTextArea
内键入文本时并单击另存为,程序将在工作区中创建一个文本文件,其中的文本在 JTextArea
中键入。问题是,当我单击“保存”时,程序可以创建一个文本文件,但在文本区域中键入的文本不会保存在创建的文本文件中。文本文件的名称是"Text"
。我用了getText()
获取 TextArea
内文本的方法.
这是程序:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
public class TextAreaWithMenus extends JFrame implements ActionListener {
JTextArea area;
JMenuBar menubar;
JMenu option;
JMenuItem menuitem;
File file;
FileWriter fwriter;
PrintWriter pwriter;
String order[] = {"Save as","Edit"};
public TextAreaWithMenus() {
setSize(new Dimension(500,500));
setDefaultCloseOperation(this.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setResizable(false);
setLayout(null);
area = new JTextArea();
menubar = new JMenuBar();
option = new JMenu("File");
for(String call : order) {
menuitem = new JMenuItem(call);
option.add(menuitem);
menuitem.addActionListener(this);
}
this.add(menubar);
menubar.setBounds(0,0,500,30);
menubar.add(option);
this.add(area);
area.setBounds(0,30,500,470);
area.setLineWrap(true);
area.setWrapStyleWord(true);
try{
file = new File("C://Users/LunaWorkspace/TestProject/src/Text");
fwriter = new FileWriter(file);
pwriter = new PrintWriter(fwriter,true);
}catch(Exception e) {}
setVisible(true);
}//END OF CONSTRUCTOR
public void save() {
try {
if(!file.exists()) {
try {
file.createNewFile();
pwriter.print(area.getText());
System.out.println(area.getText());
System.out.println("Saved complete");
}catch(Exception ef) {
ef.printStackTrace();
System.err.print("Cannot Create");
}
}else if(file.exists()) {
pwriter.print(area.getText());
System.out.println(area.getText());
System.out.println("Overwrite complete");
}
} catch(Exception exp) {
exp.printStackTrace();
System.err.println("Cannot Save");
}
}
public void actionPerformed(ActionEvent ac) {
String act = ac.getActionCommand();
if(act.equals("Save as")) {
save();
}else if(act.equals("Edit")) {}
}
public static void main (String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() { new TextAreaWithMenus();} });
}
}
最佳答案
当保存正在缓冲时,您需要调用刷新。这有效:
public void save() {
try {
if (!file.exists()) {
try {
file.createNewFile();
pwriter.print(area.getText());
System.out.println(area.getText());
System.out.println("Saved complete");
} catch (Exception ef) {
ef.printStackTrace();
System.err.print("Cannot Create");
}
} else if (file.exists()) {
pwriter.print(area.getText());
System.out.println(area.getText());
System.out.println("Overwrite complete");
}
} catch (Exception exp) {
exp.printStackTrace();
System.err.println("Cannot Save");
} finally {
pwriter.flush();
}
}
关于java - 无法使用 FileWriter 和 Printwriter 在文本文件中写入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26888655/