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

📄 notebook6.java

📁 一个java语言编译的记事本 的源代码 完全模拟windows下的Notepad程序
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class NoteBook6 extends JFrame {
	private JMenuItem menuOpen;

	private JMenuItem menuSave;

	private JMenuItem menuSaveAs;

	private JMenuItem menuClose;

	private JMenu editMenu;

	private JMenuItem menuCut;

	private JMenuItem menuCopy;

	private JMenuItem menuPaste;

	private JMenuItem menuAbout;

	private JTextArea textArea;

	private JLabel stateBar;

	private JFileChooser fileChooser;

	private JPopupMenu popUpMenu;

	public NoteBook6() {
		super("新建文本文件");
		setUpUIComponent();
		setUpEventListener();
		setVisible(true);
	}

	private void setUpUIComponent() {
		setSize(640, 480);

		// 菜单栏 
		JMenuBar menuBar = new JMenuBar();

		// 设置「文件」菜单 
		JMenu fileMenu = new JMenu("文件");
		menuOpen = new JMenuItem("打开");
		// 快捷键设置 
		menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
				InputEvent.CTRL_MASK));
		menuSave = new JMenuItem("保存");
		menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
				InputEvent.CTRL_MASK));
		menuSaveAs = new JMenuItem("另存为");

		menuClose = new JMenuItem("关闭");
		menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
				InputEvent.CTRL_MASK));

		fileMenu.add(menuOpen);
		fileMenu.addSeparator(); // 分隔线 
		fileMenu.add(menuSave);
		fileMenu.add(menuSaveAs);
		fileMenu.addSeparator(); // 分隔线 
		fileMenu.add(menuClose);

		// 设置「编辑」菜单 
		JMenu editMenu = new JMenu("编辑");
		menuCut = new JMenuItem("剪切");
		menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
				InputEvent.CTRL_MASK));
		menuCopy = new JMenuItem("复制");
		menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
				InputEvent.CTRL_MASK));
		menuPaste = new JMenuItem("粘贴");
		menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
				InputEvent.CTRL_MASK));
		editMenu.add(menuCut);
		editMenu.add(menuCopy);
		editMenu.add(menuPaste);

		// 设置「关于」菜单 
		JMenu aboutMenu = new JMenu("关于");
		menuAbout = new JMenuItem("关于记事本");
		aboutMenu.add(menuAbout);

		menuBar.add(fileMenu);
		menuBar.add(editMenu);
		menuBar.add(aboutMenu);

		setJMenuBar(menuBar);

		// 文字编辑区域 
		textArea = new JTextArea();
		textArea.setFont(new Font("宋体", Font.PLAIN, 16));
		textArea.setLineWrap(true);
		JScrollPane panel = new JScrollPane(textArea,
				ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
				ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);

		Container contentPane = getContentPane();
		contentPane.add(panel, BorderLayout.CENTER);

		// 状态栏 
		stateBar = new JLabel("未修改");
		stateBar.setHorizontalAlignment(SwingConstants.LEFT);
		stateBar.setBorder(BorderFactory.createEtchedBorder());
		contentPane.add(stateBar, BorderLayout.SOUTH);

		popUpMenu = editMenu.getPopupMenu();
		fileChooser = new JFileChooser();
	}

	private void setUpEventListener() {
		// 按下窗口关闭钮事件处理 
		addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				closeFile();
			}
		});

		// 菜单 - 打开 
		menuOpen.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				openFile();
			}
		});

		// 菜单 - 保存 
		menuSave.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				saveFile();
			}
		});

		// 菜单 - 另存为 
		menuSaveAs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				saveFileAs();
			}
		});

		// 菜单 - 关闭文件 
		menuClose.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				closeFile();
			}
		});

		// 菜单 - 剪切 
		menuCut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				cut();
			}
		});

		// 菜单 - 复制 
		menuCopy.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				copy();
			}
		});

		// 菜单 - 粘贴 
		menuPaste.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				paste();
			}
		});

		// 菜单 - 关于 
		menuAbout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// 显示对话框 
				JOptionPane.showOptionDialog(null, "程序名称:\n NoteBook \n"
						+ "简介:\n 一个简单的文字编辑器\n", "关于NoteBook",
						JOptionPane.DEFAULT_OPTION,
						JOptionPane.INFORMATION_MESSAGE, null, null, null);
			}
		});

		// 编辑区键盘事件 
		textArea.addKeyListener(new KeyAdapter() {
			public void keyTyped(KeyEvent e) {
				processTextArea();
			}
		});

		// 编辑区鼠标事件 
		textArea.addMouseListener(new MouseAdapter() {
			public void mouseReleased(MouseEvent e) {
				if (e.getButton() == MouseEvent.BUTTON3)
					popUpMenu.show(editMenu, e.getX(), e.getY());
			}

			public void mouseClicked(MouseEvent e) {
				if (e.getButton() == MouseEvent.BUTTON1)
					popUpMenu.setVisible(false);
			}
		});
	}

	private void openFile() {
		if (isCurrentFileSaved()) { // 文件是否为保存状态 
			open(); // 打开 
		} else {
			// 显示对话框 
			int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?",
					"保存文件?", JOptionPane.YES_NO_OPTION,
					JOptionPane.WARNING_MESSAGE, null);
			switch (option) {
			// 确认文件保存 
			case JOptionPane.YES_OPTION:
				saveFile(); // 保存文件 
				break;
			// 放弃文件保存 
			case JOptionPane.NO_OPTION:
				open();
				break;
			}
		}
	}

	private boolean isCurrentFileSaved() {
		if (stateBar.getText().equals("未修改")) {
			return true;
		} else {
			return false;
		}
	}

	private void open() {
		// fileChooser 是 JFileChooser 的实例 
		// 显示文件选取的对话框 
		int option = fileChooser.showDialog(null, null);

		// 使用者按下确认键 
		if (option == JFileChooser.APPROVE_OPTION) {
			/* 
			 TODO: 添加读取文件的代码 
			 */
		}
	}

	private void saveFile() {
		/* 
		 TODO: 添加保存文件的代码 
		 */
	}

	private void saveFileAs() {
		/* 
		 TODO: 添加另存为的代码 
		 */
	}

	private void closeFile() {
		// 是否已保存文件 
		if (isCurrentFileSaved()) {
			// 释放窗口资源,而后关闭程序 
			dispose();
		} else {
			int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?",
					"保存文件?", JOptionPane.YES_NO_OPTION,
					JOptionPane.WARNING_MESSAGE, null);

			switch (option) {
			case JOptionPane.YES_OPTION:
				saveFile();
				break;
			case JOptionPane.NO_OPTION:
				dispose();
			}
		}
	}

	private void cut() {
		textArea.cut();
		stateBar.setText("已修改");
		popUpMenu.setVisible(false);
	}

	private void copy() {
		textArea.copy();
		popUpMenu.setVisible(false);
	}

	private void paste() {
		textArea.paste();
		stateBar.setText("已修改");
		popUpMenu.setVisible(false);
	}

	private void processTextArea() {
		stateBar.setText("已修改");
	}

	public static void main(String[] args) {
		new NoteBook6();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -