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

📄 notepad.java

📁 java 做的记事本
💻 JAVA
字号:
/*******************************************
*	
*	程序五:文本编辑器(模拟实现Windows记事本程序)
*	Notepad.java
*
*	Author: Hejie	20044440219
*
********************************************/

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

public class Notepad extends JFrame
{
	JMenuBar menub=new JMenuBar();
	JTextArea text=new JTextArea();
	JMenu files=new JMenu("文件(F)");
	JMenu edit=new JMenu("编辑(E)");
	JMenu formats=new JMenu("格式(O)");
	JMenu help=new JMenu("帮助(H)");
	JMenuItem newFile=new JMenuItem("新建(N)");
	JMenuItem open=new JMenuItem("打开(O)...");
	JMenuItem save=new JMenuItem("保存(S)");
	JMenuItem saveAs=new JMenuItem("另存为(A)...");
	JMenuItem exit=new JMenuItem("退出(X)");
	JMenuItem undo=new JMenuItem("撤销(U)");
	JMenuItem cut=new JMenuItem("剪切(T)");
	JMenuItem copy=new JMenuItem("复制(C)");
	JMenuItem paste=new JMenuItem("粘贴(P)");
	JMenuItem selectAll=new JMenuItem("全选(A)");
	JMenuItem timeDate=new JMenuItem("时间/日期(D)");
	JCheckBoxMenuItem lineWrap=new JCheckBoxMenuItem("自动换行(M)");
	JMenuItem fonts=new JMenuItem("字体...");
	JMenuItem about=new JMenuItem("关于记事本(A)");
	JFrame th=this;
	String name;
	String openedPath=null;
	boolean opened=false;
	boolean reworked=false;

	//初始化窗体
	Notepad(String name)
	{
		super(name);
		this.name=name;
		int x,y;
		Dimension size=Toolkit.getDefaultToolkit().getScreenSize();
		x=(size.width-600)/2;
		y=(size.height-400)/2;
		setSize(600,400);
		setLocation(x,y);
		//让程序界面显示在屏幕中央
		setMinimumSize(new Dimension(250,150));
		setDefaultCloseOperation(EXIT_ON_CLOSE); 
		
	}
	
	//初始化布局
	void init()
	{
		files.setMnemonic('F');
		edit.setMnemonic('E');
		formats.setMnemonic('O');
		help.setMnemonic('H');
		newFile.setMnemonic('N');
		open.setMnemonic('O');
		save.setMnemonic('S');
		saveAs.setMnemonic('A');
		exit.setMnemonic('X');
		undo.setMnemonic('U');
		cut.setMnemonic('T');
		copy.setMnemonic('C');
		paste.setMnemonic('P');
		selectAll.setMnemonic('A');
		timeDate.setMnemonic('D');
		lineWrap.setMnemonic('M');
		about.setMnemonic('A');
		//为控件添加助记符
		
		newFile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
		open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
		save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
		exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,InputEvent.CTRL_MASK));
		cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
		copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
		paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
		selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
		timeDate.setAccelerator(KeyStroke.getKeyStroke("F5"));
		//为控件添加快捷键
				
		files.add(newFile);
		files.add(open);
		files.add(save);
		files.add(saveAs);
		files.addSeparator();
		files.add(exit);
		edit.add(undo);
		edit.addSeparator();
		edit.add(cut);
		edit.add(copy);
		edit.add(paste);
		edit.addSeparator();
		edit.add(selectAll);
		edit.add(timeDate);
		formats.add(lineWrap);
		formats.add(fonts);
		help.add(about);
		
		menub.add(files);
		menub.add(edit);
		menub.add(formats);
		menub.add(help);
		setJMenuBar(menub); 
		getContentPane().add(new JScrollPane(text));
		
		Listen listen=new Listen();
		Listen1 listen1=new Listen1();
		
		newFile.addActionListener(listen);
		open.addActionListener(listen);
		save.addActionListener(listen);
		saveAs.addActionListener(listen);
		exit.addActionListener(listen);
		cut.addActionListener(listen);
		copy.addActionListener(listen);
		paste.addActionListener(listen);
		selectAll.addActionListener(listen);
		timeDate.addActionListener(listen);
		lineWrap.addActionListener(listen);
		about.addActionListener(listen);
		open.addActionListener(listen1);
		save.addActionListener(listen1);
		saveAs.addActionListener(listen1);
		//为控件添加事件侦听器
		
		undo.setEnabled(false);
		fonts.setEnabled(false); 
		//暂时没有实现的功能
	}

	class Listen implements ActionListener
	{
		//实现用于一般操作的事件侦听器
		public void actionPerformed(ActionEvent e)
		{
			Object source=e.getSource();

			if(source==newFile)
			{
				text.setText("");
				th.setTitle(name);
				openedPath=null;
				opened=false;
			}
			else if(source==exit)
				System.exit(0);
			else if(source==selectAll)
				text.selectAll();
			else if(source==cut)
				text.cut();
			else if(source==copy)
				text.copy();
			else if(source==paste)
				text.paste();
			else if(source==lineWrap)
				text.setLineWrap(!text.getLineWrap());
			else if(source==about)
			{
				String message="                   ----牛的记事本----\n版本:1.0\n作者:牛的传人\nQQ:530705296\nEmail:sant009@139.com\n感谢您的使用";
				JOptionPane.showMessageDialog(th,message,"关于",JOptionPane.PLAIN_MESSAGE);
			}
			else if(source==timeDate)
			{
				Date nowTime=new Date();
				SimpleDateFormat times=new SimpleDateFormat("HH:mm yyyy-MM-dd");
				text.insert(times.format(nowTime),text.getCaretPosition());
			}
		}
	}

	class Listen1 implements ActionListener
	{
		//实现用于对文件进行操作的事件侦听器
		public void actionPerformed(ActionEvent e)
		{
			Object source=e.getSource();
			//打开文件事件
			if(source==open)
			{
				FileDialog openFile=new FileDialog(th,"打开文件...",FileDialog.LOAD);
				openFile.setVisible(true);
				String filePath=openFile.getDirectory()+openFile.getFile();
				try
				{
					FileInputStream fis=new FileInputStream(filePath);
					byte [] content=new byte[fis.available()];
					fis.read(content);
					text.setText(new String(content));
					text.setCaretPosition(0);
					if(openFile.getFile()!=null)
					{
						th.setTitle(openFile.getFile()+name);
						openedPath=filePath;
						opened=true;
					}
					fis.close();
				}
				catch(Exception ex)
				{
					ex.printStackTrace();
				}
				opened=true;
			}
			//保存及另存为事件
			else if(source==save||source==saveAs)
			{
				String savePath=openedPath;
				if(savePath==null||source==saveAs)
				{
					FileDialog saveFile=new FileDialog(th,"保存文件...",FileDialog.SAVE);
					saveFile.setVisible(true);
					savePath=saveFile.getDirectory()+saveFile.getFile();
				}
				try
				{
					FileOutputStream fos=new FileOutputStream(savePath);
					fos.write(text.getText().getBytes());
					fos.close();
				}
				catch(Exception ex)
				{
					ex.printStackTrace();
				}
				if(source==save)
					openedPath=savePath;
			}
		}
	}
	
	public static void main(String[] args)
	{
		try {
    	UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());
    }
    catch (Exception e) {
    	System.err.println("Couldn't use the system look and feel:"+e);
    }
		String name=("--牛的记事本  V1.0--");
		//让界面呈现跟系统一致的外观
		JFrame.setDefaultLookAndFeelDecorated(true);
		JDialog.setDefaultLookAndFeelDecorated(true);
		Notepad note=new Notepad(name);		
		note.init();
		note.setVisible(true);
	}
}

⌨️ 快捷键说明

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