⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 notebook3.java

📁 一个java语言编译的记事本 的源代码 完全模拟windows下的Notepad程序
💻 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 + -