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

📄 notepad.java

📁 类似Windows下的Notepad 并实现其他使用功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
				if (statusitem.getState() == true)
					statusLabel.setText("View the introduction");
			}

			public void mouseExited(MouseEvent e) {
				if (statusitem.getState() == true)
					statusLabel.setText("Status");
			}
		});
		aboutitem.addActionListener(this);
		textArea = new JTextArea(30, 50);
		textArea.setAutoscrolls(true);
		textArea.setLineWrap(true);
		JScrollPane scroll = new JScrollPane(textArea);
		statusLabel = new JLabel("");
		statusLabel.setHorizontalTextPosition(JLabel.LEFT);
		textArea.addMouseMotionListener(new MouseMotionAdapter() { // 文本区监听,若有鼠标选择文本区域则执行相应操作
					public void mouseDragged(MouseEvent e) {
						if (textArea.getSelectedText() != null) {
							delitem.setEnabled(true);
							cutitem.setEnabled(true);
							copyitem.setEnabled(true);
							pdelitem.setEnabled(true);
							pcutitem.setEnabled(true);
							pcopyitem.setEnabled(true);
						} else {
							delitem.setEnabled(false);
							cutitem.setEnabled(false);
							copyitem.setEnabled(false);
							pdelitem.setEnabled(false);
							pcutitem.setEnabled(false);
							pcopyitem.setEnabled(false);
						}
					}

					public void mouseMoved(MouseEvent e) {
						if (textArea.getSelectedText() != null) {
							delitem.setEnabled(true);
							cutitem.setEnabled(true);
							copyitem.setEnabled(true);
							pdelitem.setEnabled(true);
							pcutitem.setEnabled(true);
							pcopyitem.setEnabled(true);
						} else {
							delitem.setEnabled(false);
							cutitem.setEnabled(false);
							copyitem.setEnabled(false);
							pdelitem.setEnabled(false);
							pcutitem.setEnabled(false);
							pcopyitem.setEnabled(false);
						}
					}

				});
		textArea.addMouseListener(new MouseAdapter() {
			public void mouseReleased(MouseEvent e) {
				if (e.isPopupTrigger()) {
					popupMenu.show(textArea, e.getX(), e.getY());
				}
			}
		});
		t = new DocumentListener() { // 新建文档监听对象
			public void changedUpdate(DocumentEvent e) { // 文档修改时
				temp[0] = temp[1]; // 恢复上一布操作
				undoitem.setEnabled(true); // 开启撤销菜单
				saveflag = 0; // 设置未保存标志
				try {
					temp[1] = textArea.getDocument().getText(0,
							textArea.getDocument().getLength()); // 保存修改后文档
				} catch (BadLocationException ee) {
				}

			}

			public void insertUpdate(DocumentEvent e) {
				temp[0] = temp[1];
				undoitem.setEnabled(true);
				saveflag = 0;
				try {
					temp[1] = textArea.getDocument().getText(0,
							textArea.getDocument().getLength());
				} catch (BadLocationException ee) {
				}
			}

			public void removeUpdate(DocumentEvent e) {
				temp[0] = temp[1];
				undoitem.setEnabled(true);
				saveflag = 0;
				try {
					temp[1] = textArea.getDocument().getText(0,
							textArea.getDocument().getLength());
				} catch (BadLocationException ee) {
				}
			}
		};
		textArea.getDocument().addDocumentListener(t);

		filemenu.add(newitem); // 界面部署
		filemenu.add(openitem);
		filemenu.add(saveitem);
		filemenu.add(saveasitem);
		filemenu.addSeparator();
		filemenu.add(exititem);
		editmenu.add(undoitem);
		editmenu.addSeparator();
		editmenu.add(cutitem);
		editmenu.add(copyitem);
		editmenu.add(pasteitem);
		editmenu.add(delitem);
		editmenu.addSeparator();
		editmenu.add(finditem);
		editmenu.add(findnextitem);
		editmenu.add(replaceitem);
		editmenu.addSeparator();
		editmenu.add(selallitem);
		editmenu.add(timeitem);
		formatmenu.add(coloritem);
		formatmenu.add(fontitem);
		viewmenu.add(statusitem);
		helpmenu.add(aboutitem);
		menubar.add(filemenu);
		menubar.add(editmenu);
		menubar.add(formatmenu);
		menubar.add(viewmenu);
		menubar.add(helpmenu);
		popupMenu.add(pcutitem);
		popupMenu.add(pcopyitem);
		popupMenu.add(ppasteitem);
		popupMenu.add(pdelitem);
		popupMenu.addSeparator();
		popupMenu.add(pselallitem);
		popupMenu.addSeparator();
		popupMenu.add(pcoloritem);
		popupMenu.add(pfontitem);
		Container container = frame.getContentPane();
		container.add(menubar, BorderLayout.NORTH);
		container.add(scroll, BorderLayout.CENTER);
		scroll
				.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		scroll
				.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		scroll.setViewportView(textArea);
		container.add(textArea, BorderLayout.CENTER);
		container.add(statusLabel, BorderLayout.SOUTH);
		frame.setVisible(true);
		frame.pack();
		frame.setLocation(320, 120);
		frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // 由于在关闭时设有自定义操作,故设置如此
	}

	public void actionPerformed(ActionEvent e) { // 响应其他动作命令
		if (e.getSource() == undoitem) { // 撤销,此处参照记事本一步撤销往复
			textArea.getDocument().removeDocumentListener(t);
			String tempundo = new String();
			textArea.setText(temp[0]);
			textArea.getDocument().addDocumentListener(t);
			tempundo = temp[1];
			temp[1] = temp[0];
			temp[0] = tempundo;
		} else if (e.getSource() == delitem || e.getSource() == pdelitem) { // 响应删除命令
			try {
				temp[0] = textArea.getDocument().getText(0,
						textArea.getDocument().getLength());
			} catch (BadLocationException ee) {
			}
			String strdel = new String();
			strdel = textArea.getSelectedText();
			int a = textArea.getText().indexOf(strdel);
			int b = a + strdel.length();
			String strend = textArea.getText().substring(0, a)
					+ textArea.getText().substring(b);
			textArea.setText(strend);
			delitem.setEnabled(false);
			cutitem.setEnabled(false);
			copyitem.setEnabled(false);
			pdelitem.setEnabled(false);
			pcutitem.setEnabled(false);
			pcopyitem.setEnabled(false);

		} else if (e.getSource() == cutitem || e.getSource() == pcutitem) { // 响应剪切命令
			try {
				temp[0] = textArea.getDocument().getText(0,
						textArea.getDocument().getLength());
			} catch (BadLocationException ee) {
			}
			textArea.cut();
			cutitem.setEnabled(false);
			delitem.setEnabled(false);
			copyitem.setEnabled(false);
			pcutitem.setEnabled(false);
			pdelitem.setEnabled(false);
			pcopyitem.setEnabled(false);

		} else if (e.getSource() == copyitem || e.getSource() == pcopyitem) { // 响应拷贝命令
			try {
				temp[0] = textArea.getDocument().getText(0,
						textArea.getDocument().getLength());
			} catch (BadLocationException ee) {
			}
			textArea.copy();
			copyitem.setEnabled(false);
			delitem.setEnabled(false);
			cutitem.setEnabled(false);
			pcopyitem.setEnabled(false);
			pdelitem.setEnabled(false);
			pcutitem.setEnabled(false);
		} else if (e.getSource() == pasteitem || e.getSource() == ppasteitem) { // 响应粘贴命令
			try {
				temp[0] = textArea.getDocument().getText(0,
						textArea.getDocument().getLength());
			} catch (BadLocationException ee) {
			}
			textArea.paste();

		} else if (e.getSource() == selallitem || e.getSource() == pselallitem) { // 响应全选命令
			textArea.selectAll();
			if (textArea.getSelectedText() != null) {
				copyitem.setEnabled(true);
				delitem.setEnabled(true);
				cutitem.setEnabled(true);
				pcopyitem.setEnabled(true);
				pdelitem.setEnabled(true);
				pcutitem.setEnabled(true);
			}
		} else if (e.getSource() == finditem) { // 响应查找命令
			findinput = JOptionPane.showInputDialog(frame,
					"please input what you want to find", "Find",
					JOptionPane.INFORMATION_MESSAGE);
			if (findinput == null || findinput == "") {

			} else {
				int a = textArea.getText().indexOf(findinput);
				if (a == -1)
					JOptionPane.showMessageDialog(frame, "not find");
				else {
					findend = a + findinput.length();
					textArea.setSelectionStart(a);
					textArea.setSelectionEnd(findend);
				}
			}

		} else if (e.getSource() == findnextitem) { // 响应查找下一个命令
			int flag = 0;
			if (findinput == null && findinput == "") {
			} else {
				String str = textArea.getText().substring(findend);
				flag = str.indexOf(findinput);
				int a = flag + findend;
				if (flag == -1)
					JOptionPane.showMessageDialog(frame, "find end");
				else {
					findend = a + findinput.length();
					textArea.setSelectionStart(a);
					textArea.setSelectionEnd(findend);
				}
			}

		} else if (e.getSource() == timeitem) { // 响应插入时间命令
			try {
				temp[0] = textArea.getDocument().getText(0,
						textArea.getDocument().getLength());
			} catch (BadLocationException ee) {
			}

			textArea.insert(new Date().toString(), textArea.getCaretPosition());

		} else if (e.getSource() == replaceitem) { // 响应替换命令
			try {
				temp[0] = textArea.getDocument().getText(0,
						textArea.getDocument().getLength()); // 保存临时文档
			} catch (BadLocationException ee) {
			}
			replaceDialog dialog = new replaceDialog(); // 调用替换对话框
			if (dialog.valid == 1) { // 对话框中选择确定
				String replacefrom = dialog.find; // 接收替换对话框所给参数
				String replaceto = dialog.replace;
				int flag = 0;
				int t = 0;
				int replacebegin = 0;
				int replaceend = 0;
				String content = new String();
				while (true) { // 查找全部
					String str = textArea.getText();
					flag = str.indexOf(replacefrom, replaceend); // 查找匹配

					if (flag == -1) { // 查找结束
						if (replaceend != str.length())
							content = content
									+ str.substring(replaceend, str.length());
						break;
					}
					if (flag == 0) // 首次查找判断
						content = replaceto + str.substring(0, replacebegin);
					else if (t != 0 || flag != 0)
						content = content + str.substring(replaceend, flag)
								+ replaceto; // 临时文本截取
					replacebegin = flag;
					replaceend = replacebegin + replacefrom.length();
					textArea.setSelectionStart(replacebegin);
					textArea.setSelectionEnd(replaceend);
					t++;
				}
				textArea.setText(content); // 将修改后结果显示在文本显示区
			}

		} else if (e.getSource() == statusitem) { // 响应状态栏显示或取消命令
			if (statusitem.getState() == true) {
				statusLabel.setText("status");
				statusLabel.setVisible(true);
			} else
				statusLabel.setVisible(false);
		} else if (e.getSource() == coloritem || e.getSource() == pcoloritem) { // 响应颜色选择命令
			c = new JColorChooser();
			Color color = JColorChooser.showDialog(frame, "ColorChooser",
					Color.BLACK);
			if (color == null)
				;
			else
				textArea.setForeground(color);
		} else if (e.getSource() == fontitem || e.getSource() == pfontitem) { // 响应字体选择命令
			fontDialog fontDlg = new fontDialog();
			if (fontDlg.valid == 1) {
				textArea.setFont(new Font(fontDlg.fontName, fontDlg.fontStyle,
						fontDlg.fontSize));
			}

		} else if (e.getSource() == aboutitem) { // 响应关于对话框命令
			@SuppressWarnings("unused")
			about aboutDlg = new about();
		}
	}

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

}

⌨️ 快捷键说明

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