记事本java代码实现新建打开保存另存为退出
时间: 2023-08-15 21:16:14 浏览: 57
好的,以下是一个简单的记事本 Java 代码,实现了新建、打开、保存、另存为和退出功能:
```java
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import javax.swing.filechooser.FileNameExtensionFilter;
public class Notepad extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JTextArea textArea;
private JFileChooser fileChooser;
private String fileName;
public Notepad() {
super("记事本");
// 设置菜单栏
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenuItem newMenuItem = new JMenuItem("新建");
JMenuItem openMenuItem = new JMenuItem("打开");
JMenuItem saveMenuItem = new JMenuItem("保存");
JMenuItem saveAsMenuItem = new JMenuItem("另存为");
JMenuItem exitMenuItem = new JMenuItem("退出");
newMenuItem.addActionListener(this);
openMenuItem.addActionListener(this);
saveMenuItem.addActionListener(this);
saveAsMenuItem.addActionListener(this);
exitMenuItem.addActionListener(this);
fileMenu.add(newMenuItem);
fileMenu.add(openMenuItem);
fileMenu.add(saveMenuItem);
fileMenu.add(saveAsMenuItem);
fileMenu.addSeparator();
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
// 设置文本区域
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
getContentPane().add(scrollPane, BorderLayout.CENTER);
// 设置文件选择器
fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("文本文件(*.txt)", "txt"));
// 设置窗口
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
e.printStackTrace();
}
new Notepad();
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
switch (command) {
case "新建":
newFile();
break;
case "打开":
openFile();
break;
case "保存":
saveFile();
break;
case "另存为":
saveAsFile();
break;
case "退出":
exit();
break;
}
}
// 新建文件
private void newFile() {
if (textArea.getText().length() > 0) {
int option = JOptionPane.showConfirmDialog(this, "是否保存更改?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION);
if (option == JOptionPane.YES_OPTION) {
saveFile();
} else if (option == JOptionPane.CANCEL_OPTION) {
return;
}
}
textArea.setText("");
fileName = null;
}
// 打开文件
private void openFile() {
if (textArea.getText().length() > 0) {
int option = JOptionPane.showConfirmDialog(this, "是否保存更改?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION);
if (option == JOptionPane.YES_OPTION) {
saveFile();
} else if (option == JOptionPane.CANCEL_OPTION) {
return;
}
}
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
try {
File file = fileChooser.getSelectedFile();
fileName = file.getAbsolutePath();
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append(System.lineSeparator());
}
reader.close();
textArea.setText(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 保存文件
private void saveFile() {
if (fileName == null) {
saveAsFile();
} else {
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName));
writer.write(textArea.getText());
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 另存为文件
private void saveAsFile() {
int result = fileChooser.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
try {
File file = fileChooser.getSelectedFile();
if (!file.getName().endsWith(".txt")) {
file = new File(file.getAbsolutePath() + ".txt");
}
fileName = file.getAbsolutePath();
BufferedWriter writer = new BufferedWriter(new FileWriter(file));
writer.write(textArea.getText());
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 退出程序
private void exit() {
if (textArea.getText().length() > 0) {
int option = JOptionPane.showConfirmDialog(this, "是否保存更改?", "记事本", JOptionPane.YES_NO_CANCEL_OPTION);
if (option == JOptionPane.YES_OPTION) {
saveFile();
} else if (option == JOptionPane.CANCEL_OPTION) {
return;
}
}
System.exit(0);
}
}
```
该记事本实现了新建、打开、保存、另存为和退出功能,可以选择文本文件进行编辑。