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

📄 mytext.java

📁 纯Java写的简易记事本,代码简单易懂,对初学JAVA者有很大帮助.两个.java同时编译运行就可以,无需修改
💻 JAVA
字号:

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
import javax.swing.undo.*;
import java.util.*;

class UserInterface extends JFrame{
	
	//	设置界面
	JFrame frame = new JFrame("我的记事本");
	JColorChooser colorchooser=new JColorChooser();//
	
	// 设置菜单项目
	JMenuItem 
			menuFileNew, menuFileOpen, menuFileSave, menuFileSaveAs, 
			menuFileExit,menuEditCut, menuEditCopy,	menuEditPaste, 
		    menuSelectAll,menuEditDeleteSelection,  menuGsziti,
			timePerformed,  menuHelpAbout;
	
	//设置可选择菜单
	JCheckBoxMenuItem menuViewWordWrap;
	
	//	设置菜单分类
	JMenu menuFile, menuEdit, menuView, menuHelp,menuGs;
	
	//	设置右键菜单项目
	JMenuItem
			RCMenuCut, RCMenuCopy, RCMenuPaste, RCMenuSelectAll,RCTimePerformed,RCMenuEditDeleteSelection;
	
	//	设置菜单条
	JMenuBar mb = new JMenuBar();
	JPopupMenu popup = new JPopupMenu();
	
	//	设置文本编辑区
	JScrollPane scrollPane;
	JTextArea textArea;
	
	//	设置监听器
	MyListener ML = new MyListener();
	PopupListener PL = new PopupListener();
	
	//	设置其它系统参数
	boolean isFileSave = false;
	boolean isFileNew  = true;
	int receiveReturnPara;
	
	private void setMenu() {
		//	----------	设置菜单分类	----------
		menuFile = new JMenu("文件(F)	", true);
		menuFile.setMnemonic(KeyEvent.VK_F);
		
		menuEdit = new JMenu("编辑(E)", true);
		menuEdit.setMnemonic(KeyEvent.VK_E);
		
		menuGs = new JMenu("格式(O)", true);
		menuGs.setMnemonic(KeyEvent.VK_O);

		menuView = new JMenu("查看(V)", true);
		menuView.setMnemonic(KeyEvent.VK_V);
		
		menuHelp = new JMenu("帮助(H)", true);
		menuHelp.setMnemonic(KeyEvent.VK_H);
		//		----------	菜单分类结束	----------
		
		
		// 文件 新建菜单
		menuFileNew = new JMenuItem("新建", 'N');
		menuFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
				InputEvent.CTRL_MASK));
		menuFileNew.addActionListener(ML);

		//	文件 打开菜单
		menuFileOpen = new JMenuItem("打开(O)", 'O');
		menuFileOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
				InputEvent.CTRL_MASK));
		menuFileOpen.addActionListener(ML);
		
		//	文件 保存菜单
		menuFileSave = new JMenuItem("保存(S)", 'S');
		menuFileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
				InputEvent.CTRL_MASK));
		menuFileSave.addActionListener(ML);
		
		//	文件 另存为菜单
		menuFileSaveAs = new JMenuItem("另存为(A)...    ", 'A');
		menuFileSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12, 0));
		menuFileSaveAs.addActionListener(ML);
		
		//	文件 关闭菜单
		menuFileExit = new JMenuItem("退出(X)", 'X');
		menuFileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,
				InputEvent.ALT_MASK));
		menuFileExit.addActionListener(ML);
		
		//	编辑 剪切菜单
		menuEditCut = new JMenuItem("剪切(T)   ", 'T');
		menuEditCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
				InputEvent.CTRL_MASK));
		menuEditCut.addActionListener(ML);
		
		//	编辑 复制菜单
		menuEditCopy = new JMenuItem("复制(C)   ", 'C');
		menuEditCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
				InputEvent.CTRL_MASK));
		menuEditCopy.addActionListener(ML);
		
		//	编辑 粘贴菜单
		menuEditPaste = new JMenuItem("粘贴(P)   ", 'P');
		menuEditPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
				InputEvent.CTRL_MASK));
		menuEditPaste.addActionListener(ML);
		
		//	编辑 全选菜单
		menuSelectAll = new JMenuItem("全选(A)   ", 'A');
		menuSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
				InputEvent.CTRL_MASK));
		menuSelectAll.addActionListener(ML);
		
		//	编辑 删除菜单
		menuEditDeleteSelection = new JMenuItem("删除(L)   ", 'L');
		menuEditDeleteSelection.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0));
		menuEditDeleteSelection.addActionListener(ML);

		//	编辑 时间菜单
		timePerformed = new JMenuItem("时间/日期(D)   ", 'D');
		timePerformed.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,
				InputEvent.CTRL_MASK));
		timePerformed.addActionListener(ML);
		

	    //	格式 字体菜单
		menuGsziti = new JMenuItem("字体颜色(F)   ", 'F');
		menuGsziti.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,
				InputEvent.CTRL_MASK));
		menuGsziti.addActionListener(ML);
		
		//	视图 自动换行
		menuViewWordWrap = new JCheckBoxMenuItem("自动换行   ");
		menuViewWordWrap.setMnemonic('W');
		menuViewWordWrap.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
				InputEvent.CTRL_MASK));
		menuViewWordWrap.setState(false);
		menuViewWordWrap.addActionListener(ML);
		
		//	帮助 关于
		menuHelpAbout = new JMenuItem("关于记事本(A)   ", 'A');
		menuHelpAbout.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0));
		menuHelpAbout.addActionListener(ML);
	}
	
	private void setRightClickMenu() {
		//	设置右键菜单
		RCMenuCut = new JMenuItem("剪切(T)   ", 'T');
		RCMenuCut.addActionListener(ML);
		
		RCMenuCopy = new JMenuItem("复制(C)   ", 'C');
		RCMenuCopy.addActionListener(ML);
		
		RCMenuPaste = new JMenuItem("粘贴(P)   ", 'P');  
		RCMenuPaste.addActionListener(ML);

		RCMenuEditDeleteSelection = new JMenuItem("删除(L)   ", 'L');  
		RCMenuEditDeleteSelection.addActionListener(ML);
		
		RCMenuSelectAll = new JMenuItem("全选(S)   ", 'S');   
		RCMenuSelectAll.addActionListener(ML);

		RCTimePerformed = new JMenuItem("时间/日期(D)   ", 'D');
		RCTimePerformed.addActionListener(ML);


	}

	private void setUI() {
		frame.getContentPane().setLayout(new BorderLayout());
		frame.setJMenuBar(mb);
		JPanel p = new JPanel();
		
		//	为文件菜单添加项目
		mb.add(menuFile);
		menuFile.add(menuFileNew);
		menuFile.add(menuFileOpen);
		menuFile.add(menuFileSave);
		menuFile.add(menuFileSaveAs);
		menuFile.addSeparator();	//	分割线
		menuFile.add(menuFileExit);
		
		//	为编辑菜单添加项目
		mb.add(menuEdit);
		menuEdit.add(menuEditCut);
		menuEdit.add(menuEditCopy);
		menuEdit.add(menuEditPaste);
		menuEdit.add(menuSelectAll);
		menuEdit.add(menuEditDeleteSelection);
		menuEdit.addSeparator();
		menuEdit.add(timePerformed);
		
		//	为格式菜单添加项目
		mb.add(menuGs);
		menuGs.add(menuGsziti);
		
		//	为查看菜单添加项目
		mb.add(menuView);
		menuView.add(menuViewWordWrap);

		//	为帮助菜单添加项目
		mb.add(menuHelp);
		menuHelp.add(menuHelpAbout);
		
		//	添加右键菜单
		popup.add(RCMenuCut);
		popup.add(RCMenuCopy);
		popup.add(RCMenuPaste);  
		popup.add(RCMenuEditDeleteSelection);
		popup.add(RCMenuSelectAll);   
		popup.add(RCTimePerformed);
		

		//	添加滚动区域
		scrollPane = new JScrollPane();
		JViewport port = scrollPane.getViewport();
		textArea = new JTextArea();         //创建文本区域
		textArea.setFont(new Font("Fixedsys", Font.PLAIN, 14));   //设置字体 大小
		port.add(textArea);
		
		
		
		//	添加组件
		frame.add("Center", scrollPane);
		
		//	添加右键菜单响应
		textArea.addMouseListener(PL);
		
		//	添加窗口事件
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				if(!isFileSave) {
					MyActions MA =new MyActions();
					receiveReturnPara = MA.fileNotSaveMessage();
					String s = new String("");
					if (receiveReturnPara == 0){
						//	如果选择“是”,则调用保存文件方法,然后再关闭。
						try {
							PrintWriter out = new PrintWriter(new BufferedWriter(
									new FileWriter((s =MA.fileSaveAs()))));
							out.print(textArea.getText());
							out.close();
						} catch (IOException e1) {
							e1.printStackTrace();
						}
						isFileSave = true;
						System.exit(0);
					} else if (receiveReturnPara == 1) {
						//	如果选择“否”,则直接关闭,并告知文件尚未保存。
						System.exit(0);
					}
				} else
					System.exit(0);
			}
		});
		
		//	设置窗口使可见
		frame.setSize(800,600);
		frame.setVisible(true);
				
	}
 
	void startApp() {  
		setMenu();
		setRightClickMenu();
		setUI();
	}
	


	class PopupListener extends MouseAdapter {
		public void mousePressed(MouseEvent e) {
			maybeShowPopup(e);
		}
		public void mouseReleased(MouseEvent e) {
			maybeShowPopup(e);
		}
		private void maybeShowPopup(MouseEvent e) {
			if(e.isPopupTrigger())
				popup.show(((JTextArea)e.getComponent()), e.getX(), e.getY());
		}
	}
	
	class MyListener implements ActionListener {
		MyActions MA = new MyActions();
		Color color=Color.red;
		void saveFile() {
			try {
				PrintWriter out = new PrintWriter(new BufferedWriter(
						new FileWriter(MA.fileSaveAs())));
				out.print(textArea.getText());
				out.close();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
			isFileSave = true;
		}		
		public void actionPerformed(ActionEvent e) {
			if(e.getSource() == menuFileNew) {
				//	如果没有保存,则在新建文件时候询问
				if(!isFileSave) {
					receiveReturnPara = MA.fileNotSaveMessage();
					if (receiveReturnPara == 0){
						//	如果选择“是”,则调用保存的方法,新建文件,并且告知文件是尚未保存的。
						textArea.setText("");
						isFileSave = false;						
					} else {
						//	如果选择“否”,则直接新建文件,并告知文件尚未保存。
						textArea.setText("");
						isFileSave = false;
					}
				} else
					textArea.setText("");
			}
			else if (e.getSource() == menuFileOpen) {
				//	如果没有保存,则在新建文件时候询问
				if(!isFileSave) {
					receiveReturnPara = MA.fileNotSaveMessage();
					if (receiveReturnPara == 0){
						//	如果选择“是”,则调用保存文件方法,然后再调用打开文件方法。
						//	并且告知新开文件是尚未保存的。
						
						textArea.setText("");
						textArea.setText(MA.fileOpen());
						isFileSave = false;						
					} else {
						//	如果选择“否”,则直接打开文件,并告知文件尚未保存。
						textArea.setText("");
						textArea.setText(MA.fileOpen());
						isFileSave = false;
					}
				} else {
					textArea.setText("");
					textArea.setText(MA.fileOpen());
				}
					
			}
			else if (e.getSource() == menuFileSave) {
				saveFile();				
			}
			else if (e.getSource() == menuFileSaveAs) {
				saveFile();
			}
			else if (e.getSource() == menuFileExit) {
				if(!isFileSave) {
					receiveReturnPara = MA.fileNotSaveMessage();
					if (receiveReturnPara == 0){
						//	如果选择“是”,则调用保存文件方法,然后再关闭。
						saveFile();
						System.exit(1);
					} else {
						//	如果选择“否”,则直接关闭,并告知文件尚未保存。
						System.exit(1);
					}
				} else
					System.exit(1);
			}
			else if ((e.getSource() == menuEditCut) || (e.getSource() == RCMenuCut)) {
				textArea.cut();        //剪切                            //鼠标右键事件
			}
			else if ((e.getSource() == menuEditCopy) || (e.getSource() == RCMenuCopy)){
				textArea.copy();       //复制
			}
			else if ((e.getSource() == menuEditPaste) || (e.getSource() == RCMenuPaste)) {
				textArea.paste();      //粘贴
			}
			else if ((e.getSource() == menuSelectAll) || (e.getSource() == RCMenuSelectAll)) {
				textArea.selectAll();  //显示全部
			}
			else if(e.getSource() == menuViewWordWrap) {
				if (menuViewWordWrap.getState()) {
					textArea.setLineWrap(true);       //自动换行
				} else {
					textArea.setLineWrap(false);     
				}     
			}
			else if ((e.getSource() == timePerformed) || (e.getSource() == RCTimePerformed) ) {    //插入时间
			      textArea.insert((new Date()).toString(), textArea.getSelectionEnd());
			}
			else if ((e.getSource() == menuEditDeleteSelection)|| (e.getSource() == RCMenuEditDeleteSelection) ) {     //删除
			       textArea.replaceRange(null, textArea.getSelectionStart(), textArea.getSelectionEnd());
			}
			else if((e.getSource() == menuGsziti)){
				 color=JColorChooser.showDialog(UserInterface.this,"",color);    //字体颜色
                  textArea.setForeground(color);
			}
			else if(e.getSource() == menuHelpAbout) {
				JOptionPane.showConfirmDialog(null,                //对话框
						"==== 简易记事本 ====\n咸宁学院计算机系n\t\t              何浩波\n    2008 年6月 10 日\n",
						"关于",JOptionPane.CLOSED_OPTION);
			}
		}
	}
}

public class Mytext {

	public static void main(String[] args) {
		UserInterface Mytext = new UserInterface();
		Mytext.startApp();      
	}
	 
}

⌨️ 快捷键说明

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