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

📄 notepad.java

📁 编译原理的课程设计
💻 JAVA
📖 第 1 页 / 共 4 页
字号:

package source;
//导入类
import java.nio.charset.Charset;
import java.nio.CharBuffer;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
import javax.swing.JMenuBar;
import javax.swing.JPopupMenu;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JTextArea;
import javax.swing.text.Document;
import javax.swing.JMenuItem;
import javax.swing.JSplitPane;
import java.awt.Color;
import java.awt.Font;
import java.awt.FileDialog;
import java.awt.Image;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.KeyEvent;
import java.awt.event.ActionListener;
import javax.swing.event.CaretListener;
import javax.swing.event.CaretEvent;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.FileReader;
//主界面
public class Notepad extends JFrame
{
	JPanel contentPane = null;
	final static JTextArea jta = new JTextArea(20, 10);
	final static ConsoleTextArea csta = new ConsoleTextArea(5, 10);
	String fileDir = null;
	String fileName = null;
	String lastContent = "";
	static int start = 0;
	static String findWord = "";
	static ConfigureFrame config = new ConfigureFrame();
	static AppOutputCapture console = new AppOutputCapture(jta, csta);
	//菜单栏
	JMenuBar menuBar = new JMenuBar();
	//文件菜单
	JMenu fileMenu = new JMenu("文件(F)");
	final JMenuItem systemExitMenuItem = new JMenuItem("退出(E)", KeyEvent.VK_E);
	final JMenuItem fileSaveItem = new JMenuItem("另存为(A)", KeyEvent.VK_A);
	final JMenuItem saveItem = new JMenuItem("保存(S)", KeyEvent.VK_S);
	final JMenuItem fileOpenItem = new JMenuItem("打开(O)", KeyEvent.VK_O);
	final JMenuItem newFileItem = new JMenuItem("新建(N)", KeyEvent.VK_N);
	//弹出菜单
	final JPopupMenu conPopMenu = new JPopupMenu();
	final JMenuItem clsItem = new JMenuItem("清屏(C)", KeyEvent.VK_C);
	final JMenuItem fileItem = new JMenuItem("保存(S)", KeyEvent.VK_S);
	final JPopupMenu popMenu = new JPopupMenu();
	final JMenu popChangeMenu = new JMenu("转换(B)");		
	final JMenuItem popCopyItem = new JMenuItem("复制(C)", KeyEvent.VK_C);
	final JMenuItem popPasteItem = new JMenuItem("粘贴(P)", KeyEvent.VK_P);
	final JMenuItem popCutItem = new JMenuItem("剪切(T)",KeyEvent.VK_T);
	final JMenuItem popDelItem = new JMenuItem("删除(D)",KeyEvent.VK_D);
	final JMenuItem popSelectItem = new JMenuItem("全选(A)", KeyEvent.VK_A);
	final JMenuItem popFindItem = new JMenuItem("查找(F)", KeyEvent.VK_F);
	final JMenuItem popPosItem = new JMenuItem("定位(P)", KeyEvent.VK_P);
	final JMenu popSubMenu = new JMenu("替换(U)");
	final JMenuItem popSubSingleItem = new JMenuItem("单个替换(P)", KeyEvent.VK_S);
	final JMenuItem popSubWholeItem = new JMenuItem("替换所有(W)", KeyEvent.VK_W);
	final JMenuItem popToLowItem = new JMenuItem("转换成小写(L)", KeyEvent.VK_L);
	final JMenuItem popToUpItem = new JMenuItem("转换成大写(U)", KeyEvent.VK_U);
	final JMenuItem popUpLowItem = new JMenuItem("大小写转换(X)", KeyEvent.VK_X);
	final JMenuItem popSaveItem = new JMenuItem("保存文件(S)", KeyEvent.VK_S);
	final JMenuItem popOpenItem = new JMenuItem("打开文件(O)", KeyEvent.VK_O);
	final JMenuItem popNewItem = new JMenuItem("新建文件(N)", KeyEvent.VK_N);
	//编辑菜单
	JMenu editMenu = new JMenu("编辑(E)");
	final JMenuItem copyItem = new JMenuItem("复制(C)", KeyEvent.VK_C);
	final JMenuItem pasteItem = new JMenuItem("粘贴(P)", KeyEvent.VK_P);
	final JMenu subMenu = new JMenu("替换(S)");
	final JMenu changeMenu = new JMenu("转换(B)");
	final JMenuItem cutItem = new JMenuItem("剪切(T)", KeyEvent.VK_T);
	final JMenuItem deleteItem = new JMenuItem("删除(D)", KeyEvent.VK_D);
	final JMenuItem findItem = new JMenuItem("查找(F)", KeyEvent.VK_F);
	final JMenuItem subSingleItem = new JMenuItem("单个替换(P)", KeyEvent.VK_S);
	final JMenuItem subWholeItem = new JMenuItem("替换所有(W)", KeyEvent.VK_W);
	final JMenuItem toLowItem = new JMenuItem("转换成小写(L)", KeyEvent.VK_L);
	final JMenuItem toUpItem = new JMenuItem("转换成大写(U)", KeyEvent.VK_U);
	final JMenuItem upLowItem = new JMenuItem("大小写转换(X)", KeyEvent.VK_X);
	final JMenuItem gotoItem = new JMenuItem("定位(G)", KeyEvent.VK_G);
	final JMenuItem selectItem = new JMenuItem("全选(A)", KeyEvent.VK_A);
	//工具菜单
    JMenu toolsMenu = new JMenu("工具(T)");
    final JMenuItem transItem = new JMenuItem("翻译(T)", KeyEvent.VK_T);
    final JMenuItem compileItem = new JMenuItem("编译Java(C)", KeyEvent.VK_C);
    final JMenuItem runItem = new JMenuItem("运行Java(R)", KeyEvent.VK_R);
    final JMenuItem docItem = new JMenuItem("生成文档(D)", KeyEvent.VK_D);
    final JMenu appletRun = new JMenu("运行Applet(A)");
    final JMenuItem appletHtmlItem = new JMenuItem("浏览器运行Applet(B)", KeyEvent.VK_B);
    final JMenuItem appletViewItem = new JMenuItem("查看器运行Applet(V)", KeyEvent.VK_V);
    final JMenuItem commandItem = new JMenuItem("Java常用命令(O)", KeyEvent.VK_O);
    final JMenuItem cmdItem = new JMenuItem("新CMD窗口(N)", KeyEvent.VK_N);
    //高级菜单
    JMenu advancedMenu = new JMenu("高级(A)");
    final JMenuItem readOnlyModeItem = new JMenuItem("只读模式(R)", KeyEvent.VK_R);
    final JMenuItem readWriteModeItem = new JMenuItem("正常模式(N)", KeyEvent.VK_N);
    final JMenuItem configItem = new JMenuItem("系统配置(C)", KeyEvent.VK_C);
    //帮助菜单
	final JMenuItem how_to_use_MenuItem = new JMenuItem("用法指南(U)", KeyEvent.VK_U);
	final JMenuItem aboutUS_MenuItem = new JMenuItem("关于我们(A)", KeyEvent.VK_A);
	final JMenuItem versionMenuItem = new JMenuItem("版本信息(V)",KeyEvent.VK_V);
	//大小写转换方法
	private String upLowSwitch(String sourceStr, int LEN)
	{
		char charTemp = '0';
		StringBuffer sourceStrBuf = new StringBuffer();
		for(int i = 0; i < LEN; i++)
		{
			charTemp = sourceStr.charAt(i);
			if(Character.isISOControl(charTemp))
			{
				sourceStrBuf = sourceStrBuf.append(charTemp);
				continue;
			}
			if(Character.isLowerCase(charTemp))
			{
				sourceStrBuf = sourceStrBuf.append(Character.toUpperCase(charTemp));
			}
			else
			{
				sourceStrBuf = sourceStrBuf.append(Character.toLowerCase(charTemp));
			}
		}
		sourceStr = sourceStrBuf.toString();
		return sourceStr;
	}
	//构造方法
	public Notepad()
	{
		try
		{
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		}
		catch(Exception e)
		{
			JOptionPane.showMessageDialog(Notepad.this, 
			e.toString() + ":\n运行时错误!", 
			"出错啦!", JOptionPane.INFORMATION_MESSAGE);
		}
		//窗口初始化
		setTitle("CoffeeEditor");
		ImageIcon icon=new ImageIcon("file\\wolf.gif");
		Image image=icon.getImage();
		setIconImage(image);
		setSize(800, 550);
		setResizable(true);
		contentPane = (JPanel) this.getContentPane();
		jta.setBackground(config.backColor);
		jta.setForeground(config.foreColor);
		jta.setSelectionColor(config.selectColor);
		csta.setBackground(config.conBackColor);
		csta.setForeground(config.conForeColor);
		csta.setSelectionColor(config.conSelColor);
		jta.setFont(new Font("宋体", Font.PLAIN, 16));
		csta.setFont(new Font("宋体", Font.PLAIN, 14));
		csta.setEditable(false);
		//退出系统
		addWindowListener(new WindowAdapter()
			{
				public void windowClosing(WindowEvent e)
				{
					String tempStr = jta.getText();
					if(lastContent.equals(tempStr))
						System.exit(0);
					int message = JOptionPane.showConfirmDialog(Notepad.this,
					"是否保存文件?","保存",
					JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
					if(message == 0)
					{
						BufferedWriter bw = null;
						if((fileName == null) || (fileDir == null))
						{
							FileDialog fdg = new FileDialog(Notepad.this, "保存", FileDialog.SAVE);
							fdg.setVisible(true);
							fileDir = fdg.getDirectory();
							fileName = fdg.getFile();
							try
							{
								bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
								bw.write(tempStr);
								bw.close();
								System.exit(0);
							}
							catch(Exception ex)
							{
								JOptionPane.showMessageDialog(Notepad.this, 
								ex.toString() + ":\n写入文件出错!", 
								"出错啦!", JOptionPane.INFORMATION_MESSAGE);
								System.exit(0);
							}
						}
						else
						{
							try
							{
								bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
								bw.write(tempStr);
								bw.close();
								System.exit(0);
							}
							catch(Exception ex)
							{
								JOptionPane.showMessageDialog(Notepad.this, 
								ex.toString() + ":\n写入文件出错!", 
								"出错啦!", JOptionPane.INFORMATION_MESSAGE);
								System.exit(0);
							}
						}
					}
					else if(message == 1)
					{
						System.exit(0);
					}
					else
					{
						return;
					}
				}
			});
		//菜单栏
		menuBar.setBackground(config.menuColor);
		//文件菜单
		fileMenu.setBackground(config.menuColor);
		fileMenu.setMnemonic(KeyEvent.VK_F);
		//弹出菜单
		popChangeMenu.setMnemonic(KeyEvent.VK_B);		
		popPasteItem.setEnabled(false);
		popSubMenu.setMnemonic(KeyEvent.VK_U);
		//编辑菜单
		editMenu.setBackground(config.menuColor);
		editMenu.setMnemonic(KeyEvent.VK_E);
		pasteItem.setEnabled(false);
		subMenu.setMnemonic(KeyEvent.VK_S);
		changeMenu.setMnemonic(KeyEvent.VK_B);
		//工具菜单
	    toolsMenu.setBackground(config.menuColor);
	    toolsMenu.setMnemonic(KeyEvent.VK_T);
	    appletRun.setMnemonic(KeyEvent.VK_A);
	    //高级菜单
	    advancedMenu.setBackground(config.menuColor);
	    advancedMenu.setMnemonic(KeyEvent.VK_A);
	    //帮助菜单
		//退出菜单项		
		systemExitMenuItem.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					String tempStr = jta.getText();
					if(lastContent.equals(tempStr))
						System.exit(0);
					int message = JOptionPane.showConfirmDialog(Notepad.this,
					"是否保存文件?","保存",
					JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
					if(message == 0)
					{
						BufferedWriter bw = null;
						if((fileName == null) || (fileDir == null))
						{
							FileDialog fdg = new FileDialog(Notepad.this, "保存", FileDialog.SAVE);
							fdg.setVisible(true);
							fileDir = fdg.getDirectory();
							fileName = fdg.getFile();
							try
							{
								bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
								bw.write(tempStr);
								bw.close();
								System.exit(0);
							}
							catch(Exception ex)
							{
								JOptionPane.showMessageDialog(Notepad.this, 
								ex.toString() + ":\n写入文件出错!", 
								"出错啦!", JOptionPane.INFORMATION_MESSAGE);
								System.exit(0);
							}
						}
						else
						{
							try
							{
								bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
								bw.write(tempStr);
								bw.close();
								System.exit(0);
							}
							catch(Exception ex)
							{
								JOptionPane.showMessageDialog(Notepad.this, 
								ex.toString() + ":\n写入文件出错!", 
								"出错啦!", JOptionPane.INFORMATION_MESSAGE);
								System.exit(0);
							}
						}
					}
					else if(message == 1)
					{
						System.exit(0);
					}
					else
					{
						return;
					}
				}
			});
		//文件另存为菜单项
		fileSaveItem.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					FileDialog fdg = new FileDialog(Notepad.this, "保存", FileDialog.SAVE);
					fdg.setVisible(true);
					fileDir = fdg.getDirectory();
					fileName = fdg.getFile();
					String str = jta.getText();
					lastContent = str;
					BufferedWriter bw = null;
					try
					{
						bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
						bw.write(str);
						bw.close();
						Notepad.this.setTitle("CoffeeEditor " + "[" +
							fileDir + fileName + "]");
					}
					catch(Exception ex)
					{
						JOptionPane.showMessageDialog(fileSaveItem, 
						ex.toString() + ":\n写入文件出错!", 
						"出错啦!", JOptionPane.INFORMATION_MESSAGE);
					}					
				}
			});
		//保存文件菜单
		saveItem.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					String str = jta.getText();
					lastContent = str;
					BufferedWriter bw = null;
					if((fileName == null) || (fileDir == null))
					{
						FileDialog fdg = new FileDialog(Notepad.this, "保存", FileDialog.SAVE);
						fdg.setVisible(true);
						fileDir = fdg.getDirectory();
						fileName = fdg.getFile();
						try
						{
							bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
							bw.write(str);
							bw.close();
							Notepad.this.setTitle("CoffeeEditor " + "[" +
							fileDir + fileName + "]");
						}
						catch(Exception ex)
						{
							JOptionPane.showMessageDialog(saveItem, 
							ex.toString() + ":\n写入文件出错!", 
							"出错啦!", JOptionPane.INFORMATION_MESSAGE);
						}
					}
					else
					{
						try
						{
							bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
							bw.write(str);
							bw.close();
						}
						catch(Exception ex)
						{
							JOptionPane.showMessageDialog(saveItem, 
							ex.toString() + ":\n写入文件出错!", 
							"出错啦!", JOptionPane.INFORMATION_MESSAGE);
						}
					}
				}
			});
		//打开文件菜单项
		fileOpenItem.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					FileDialog fdg = new FileDialog(Notepad.this, "打开", FileDialog.LOAD);
					FileDialog fdgSave = new FileDialog(Notepad.this, "保存", FileDialog.SAVE);
					BufferedWriter bw = null;
					StringBuffer textStrb = new StringBuffer();
					BufferedReader br = null;
					String str = jta.getText();
					if(!str.equals(lastContent))
					{
						int message = JOptionPane.showConfirmDialog(fileOpenItem,
						"是否保存文件?","保存",
						JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
						if(message == 0)
						{
							if((fileName == null) || (fileDir == null))
							{
								fdgSave.setVisible(true);
								fileDir = fdgSave.getDirectory();
								fileName = fdgSave.getFile();
								try
								{
									bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
									bw.write(str);
									bw.close();
									Notepad.this.setTitle("CoffeeEditor " + "[" +
										fileDir + fileName + "]");
								}
								catch(Exception ex)
								{
									JOptionPane.showMessageDialog(newFileItem, 
									ex.toString() + ":\n写入文件出错!", 
									"出错啦!", JOptionPane.INFORMATION_MESSAGE);
									Notepad.this.setTitle("CoffeeEditor " + "[" +
										fileDir + fileName + "]");
								}
							}
							else
							{
								try
								{
									bw = new BufferedWriter(new FileWriter(new File(fileDir, fileName)));
									bw.write(str);
									bw.close();
									Notepad.this.setTitle("CoffeeEditor " + "[" +
										fileDir + fileName + "]");
								}
								catch(Exception ex)
								{
									JOptionPane.showMessageDialog(newFileItem, 
									ex.toString() + ":\n写入文件出错!", 
									"出错啦!", JOptionPane.INFORMATION_MESSAGE);

⌨️ 快捷键说明

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