小さな GUI を持つこの短いプログラムを書きました。テキストを入力してから、それをtxtファイルに保存したり、以前に保存したファイルから読み取ったり、既存のファイルを削除したりできるはずです。動作しますが、奇妙なバグがいくつかあります。ファイルの作成後に削除しようとしても、ファイルが削除されないことがあります。
また、コードを適切に記述したかどうかはまったくわかりません。私が書いたものを見て、私が別の方法で書くべき弱点や領域を見つけることができるかどうか疑問に思っていました. また、作成後にファイルを削除すると問題が発生する理由もわかるかもしれません。私は本当に途方に暮れており、誰に尋ねたらよいかわかりません。ここに私が持っているコードがあります:
public class InputOutout extends JFrame{
private static final long serialVersionUID = -7073762217756427192L;
JLabel label;
JTextField tf;
JButton buttonAdd;
JButton buttonDisplay;
JButton buttonErase;
public InputOutout() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
setLayout(new FlowLayout());
label = new JLabel("Enter text");
add(label);
tf = new JTextField(10);
add(tf);
buttonAdd = new JButton("Press to save to file");
add(buttonAdd);
buttonDisplay = new JButton("Press to display file content");
add(buttonDisplay);
buttonErase = new JButton("Press to erase file");
add(buttonErase);
eventAdd add = new eventAdd();
eventDisplay remove = new eventDisplay();
eventErase erase = new eventErase();
buttonAdd.addActionListener(add);
buttonDisplay.addActionListener(remove);
buttonErase.addActionListener(erase);
}
private class eventAdd implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
String word = tf.getText()+ " ";
FileWriter stream = new FileWriter("text.txt",true);
BufferedWriter out = new BufferedWriter(stream);
out.append(word);
out.close();
tf.setText("");
} catch (Exception ex){
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
}
private class eventDisplay implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
FileReader stream = new FileReader("text.txt");
BufferedReader in = new BufferedReader(stream);
String text = in.readLine();
JOptionPane.showMessageDialog(null, text);
stream.close();
} catch (Exception ex){
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
}
private class eventErase implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
File file = new File("text.txt");
boolean success = file.delete();
if (!success) {
JOptionPane.showMessageDialog(null, "File was not deleted");
} else {
JOptionPane.showMessageDialog(null, "File was deleted");
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,ex.getMessage());
}
}
}
public static void main(String[] args) {
InputOutout gui = new InputOutout();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(350,100);
gui.setTitle("SuperWORD 2013");
gui.setVisible(true);
}
}