📄 notebook3.java
字号:
/**一个类似于视窗系统里记事本的程序
* 可以对文本文件进行简单的编辑和浏览
*/
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
public class NoteBook3 {
char buffer[] = new char[1024];
String sou = "";
String des = "";
long souTime, desTime;
JFrame mainWindow = new JFrame("文本编辑器");
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("文件");
JMenu helpMenu = new JMenu("帮助");
JMenuItem openItem = new JMenuItem("打开");
JMenuItem saveItem = new JMenuItem("保存");
JMenuItem resaveItem = new JMenuItem("另存为");
JMenuItem exitItem = new JMenuItem("退出");
JMenuItem helpItem = new JMenuItem("关于文本编辑器");
JTextArea textArea = new JTextArea(15, 30);
JScrollPane js = new JScrollPane();
JLabel labelInfo = new JLabel("状态栏");
Listener listen = new Listener();
JFileChooser openDialog = new JFileChooser("F:\\");
// 窗体初始化方法
public void init() {
// 把菜单项加入到菜单栏中
menuBar.add(fileMenu);
menuBar.add(helpMenu);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(resaveItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);
helpMenu.add(helpItem);
// 给菜单组件添加监听器
openItem.addActionListener(listen);
saveItem.addActionListener(listen);
resaveItem.addActionListener(listen);
exitItem.addActionListener(listen);
helpItem.addActionListener(listen);
js.getViewport().setView(textArea);
// 添加窗体中的组件
mainWindow.setJMenuBar(menuBar);
mainWindow.getContentPane().add(js, BorderLayout.CENTER);
mainWindow.getContentPane().add(labelInfo, BorderLayout.SOUTH);
// mainWindow.setBounds(0, 0, 300, 300);
mainWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
// 窗口监听事件,当关闭窗口时触发
mainWindow.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// System.exit(0);
if (sou.equals("")) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
sou = des;
if (exitFile.exists())
labelInfo.setText(exitFile.getPath()
+ "保存成功");
System.exit(0);
} else
labelInfo.setText("返回原程序");
} else
labelInfo.setText("返回原程序");
}
} else {
des = textArea.getText();
labelInfo.setText("退出程序");
if (sou.equals(des) == false) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = len = openDialog
.showSaveDialog(mainWindow);
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
if (exitFile.exists())
labelInfo.setText(exitFile.getPath()
+ "保存成功");
} else
labelInfo.setText("返回原程序");
}
} else
System.exit(0);
}
}
});
// 按适合的大小显示窗体于屏幕中央
mainWindow.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
mainWindow.setSize(300, 200);
Dimension frameSize = mainWindow.getPreferredSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
mainWindow.setLocation(((screenSize.width - frameSize.width) / 2),
((screenSize.height - frameSize.height) / 2));
mainWindow.setSize(frameSize);
mainWindow.setVisible(true);
}
// 菜单组件监听器类
class Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
// “打开”菜单项处理动作
if (command.equals("打开")) {
int len = openDialog.showOpenDialog(mainWindow);
File openFile = openDialog.getSelectedFile();
if (len == JFileChooser.APPROVE_OPTION) {
open(openFile);
souTime = openFile.lastModified();
}
}
// “保存”菜单项处理动作
if (command.equals("保存")) {
if (sou.equals("")) {
int len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File resaveFile = openDialog.getSelectedFile();
des = textArea.getText();
save(resaveFile);
sou = des;
if (resaveFile.exists())
labelInfo.setText(resaveFile.getPath() + "保存成功");
}
} else {
File saveFile = openDialog.getSelectedFile();
des = textArea.getText();
if (sou.equals(des) == false) {
save(saveFile);
sou = des;
}
}
}
// “另存为”菜单项处理动作
if (command.equals("另存为")) {
int len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File resaveFile = openDialog.getSelectedFile();
des = textArea.getText();
save(resaveFile);
if (resaveFile.exists())
labelInfo.setText(resaveFile.getPath() + "保存成功");
} else
labelInfo.setText("返回原程序");
}
// “退出”菜单项处理动作
if (command.equals("退出")) {
if (sou.equals("")) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = openDialog.showSaveDialog(mainWindow);
if (len == JFileChooser.APPROVE_OPTION) {
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
sou = des;
if (exitFile.exists()) {
labelInfo.setText(exitFile.getPath()
+ "保存成功");
}
System.exit(0);
} else
labelInfo.setText("返回原程序");
} else
labelInfo.setText("返回原程序");
}
} else {
des = textArea.getText();
labelInfo.setText("退出程序");
if (sou.equals(des) == false) {
int len = JOptionPane.showConfirmDialog(mainWindow,
"文件未保存,是否保存");
if (len == JOptionPane.NO_OPTION)
System.exit(0);
else {
if (len == JOptionPane.YES_OPTION) {
len = len = openDialog
.showSaveDialog(mainWindow);
File exitFile = openDialog.getSelectedFile();
des = textArea.getText();
save(exitFile);
if (exitFile.exists())
labelInfo.setText(exitFile.getPath()
+ "保存成功");
} else
labelInfo.setText("返回原程序");
}
} else
System.exit(0);
}
}
// “关于文本编辑器”菜单项处理动作
if (command.equals("关于文本编辑器")) {
JOptionPane.showMessageDialog(null, "文本编辑器Version 0.7");
labelInfo.setText("返回原程序");
}
}
}
// 打开文件方法
public void open(File file) {
// String filePath=file.getParent()+"\\"+file.getName();
try {
FileReader in = new FileReader(file);
int len = in.read(buffer);
textArea.setText(new String(buffer, 0, len));
sou = new String(buffer, 0, len);
labelInfo.setText("打开" + file.getPath());
in.close();
} catch (Exception e) {
}
}
// 保存文件方法
public void save(File file) {
try {
FileWriter out = new FileWriter(file);
buffer = des.toCharArray();
out.write(buffer);
out.close();
desTime = file.lastModified();
if (desTime != souTime && file.exists()) {
labelInfo.setText(file.getPath() + "保存成功");
souTime = desTime;
}
} catch (Exception e) {
}
}
public static void main(String[] args) {
new NoteBook3().init();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -