Я хочу сделать так, чтобы при запуске этой программы я мог продолжать вводить данные из текстового поля, и они будут печатать в файл, который мы пытаемся записать.
Код, который у меня есть, работает только при первом нажатии «Enter».После этого, когда я делаю это снова, выдает исключение.
Кто-нибудь может мне здесь помочь?
public static void main(String [] args) throws IOException {
//creates file or opens existing file
File f = new File("C:/Users/User/Desktop/course.txt");
Scanner sc = new Scanner(System.in);
FileWriter w = new FileWriter(f.getAbsoluteFile(), true);
BufferedWriter r = new BufferedWriter(w);
//GUI Setting
JFrame frame = new JFrame();
JLabel text = new JLabel();
JLabel results = new JLabel();
JPanel panel = new JPanel();
JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(450, 30));
text.setText("Enter \"END\" to terminate program OR \"CLEAR ALL\" to delete everything in the file");
frame.getContentPane().add(panel);
frame.setSize(new Dimension(500, 150));
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Course");
frame.setResizable(true);
frame.setVisible(true);
panel.add(text);
panel.add(textField);
panel.add(results);
//action listener for textfield when user hits enter
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String message;
message = textField.getText();
try {
if(message.contains("END")) {
System.exit(0);
}
if(message.contains("CLEAR ALL")) {
clear();
}
else {
r.write(message);
r.newLine();
}
r.close();
}catch(IOException e1) {
results.setText("Error");
}
textField.setText("");
}
}
);
//set focus to text field once GUI is opened
SwingUtilities.invokeLater(new Runnable() {
public void run() {
textField.requestFocus();
}
});
}
//clear function to empty the file
private static void clear() throws FileNotFoundException {
File f = new File("C:/Users/User/Desktop/course.txt");
PrintWriter w = new PrintWriter(f);
w.print("");
w.close();
}
}