Java实现记事本另存为功能的代码实现思路大致如下:
- 弹出保存对话框,获取用户输入的文件名和保存路径。
- 将当前编辑区域的文本内容保存到指定文件中。
- 更新文件保存状态和文件名等信息。
具体实现的代码如下:
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FileDialog; import java.awt.Frame; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; public class Notepad extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private TextArea textArea; private boolean isSaved; // 文件保存状态 private String fileName; // 文件名 public Notepad() { textArea = new TextArea(); isSaved = false; JButton saveButton = new JButton("保存"); saveButton.addActionListener(this); JButton saveAsButton = new JButton("另存为"); saveAsButton.addActionListener(this); JPanel buttonPanel = new JPanel(); buttonPanel.add(saveButton); buttonPanel.add(saveAsButton); getContentPane().setLayout(new BorderLayout()); getContentPane().add(textArea, BorderLayout.CENTER); getContentPane().add(buttonPanel, BorderLayout.SOUTH); setPreferredSize(new Dimension(400, 300)); pack(); setVisible(true); } public static void main(String[] args) { new Notepad(); } public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("保存")) { if (!isSaved) { // 未保存过则调用另存为功能 saveAs(); } else { save(); } } else if (e.getActionCommand().equals("另存为")) { saveAs(); } } // 保存文件 private void save() { try { FileWriter fw = new FileWriter(fileName); BufferedWriter bw = new BufferedWriter(fw); bw.write(textArea.getText()); bw.close(); fw.close(); isSaved = true; } catch (IOException e) { JOptionPane.showMessageDialog(this, "文件保存失败!"); } } // 另存为 private void saveAs() { Frame parent = new Frame(); FileDialog fd = new FileDialog(parent, "另存为", FileDialog.SAVE); fd.setVisible(true); String dir = fd.getDirectory(); String file = fd.getFile(); if (dir != null && file != null) { fileName = dir + file; save(); } } }
这段代码中,首先定义了一个名为Notepad
的类,其中包含了一个TextArea
组件和两个JButton
按钮。当用户点击“保存”或“另存为”按钮时,程序会根据用户的操作来执行保存或另存为的操作。
在save()
方法中,首先创建了一个FileWriter
对象,用于将文本内容写入文件。然后将文本区域中的内容写入到指定的文件中。最后将isSaved
变量设置为true
,表示文件已经保存过。
在saveAs()
方法中,首先创建了一个FileDialog
对话框,用于让
用户选择保存的文件路径和文件名。当用户选择好路径和文件名后,程序会将fileName
变量设置为用户选择的路径和文件名,并调用save()
方法保存文件。
需要注意的是,在保存文件时,如果文件保存失败,程序会弹出一个消息框提示用户。此外,当用户第一次保存文件时,程序会调用saveAs()
方法,因为此时还没有保存的文件名和路径。
总体来说,以上代码实现了一个简单的记事本应用,其中包含了另存为功能。用户可以编辑文本内容并将其保存到指定的文件中。当用户需要保存为新的文件时,可以通过“另存为”功能来实现。
评论