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

📄 notepad.java

📁 用java写的记事本程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				closeAndSave();
				System.exit(0);
			}
		});
		ta.addMouseListener(
			new MouseAdapter()
			{
				public void mouseReleased(MouseEvent me)
				{
					if (me.isPopupTrigger())
					{
						popupMenu.show(Notepad.this, me.getX()+10, me.getY()+80);
					}
				}
			}
		);
	}
	public void showMenu()
	{
		menuBar=new JMenuBar();
		setJMenuBar(menuBar);
		menu=new JMenu[5];
		menuItem=new JMenuItem[menu.length][];
		menu[0]=new JMenu("文件(F)");
		menu[0].setMnemonic('F');
		menu[1]=new JMenu("编辑(E)");
		menu[1].setMnemonic('E');
		menu[2]=new JMenu("格式(O)");
		menu[2].setMnemonic('O');
		menu[3]=new JMenu("查看(V)");
		menu[3].setMnemonic('V');
		menu[4]=new JMenu("帮助(H)");
		menu[4].setMnemonic('H');
		menuItem[0]=new JMenuItem[5];
		menuItem[1]=new JMenuItem[7];
		menuItem[2]=new JMenuItem[2];
		menuItem[3]=new JMenuItem[1];
		menuItem[4]=new JMenuItem[1];
		menuItem[0][0]=new JMenuItem("新建(N)");
		menuItem[0][0].setMnemonic('N');
		menuItem[0][1]=new JMenuItem("打开(O) ...");
		menuItem[0][1].setMnemonic('O');
		menuItem[0][2]=new JMenuItem("保存(S)");
		menuItem[0][2].setMnemonic('S');
		menuItem[0][3]=new JMenuItem("另存为(A) ...");
		menuItem[0][3].setMnemonic('A');
		menuItem[0][4]=new JMenuItem("关闭(C)");
		menuItem[0][4].setMnemonic('C');
		menuItem[1][0]=new JMenuItem("剪切(X)");
		menuItem[1][0].setMnemonic('X');
		menuItem[1][1]=new JMenuItem("复制(C)");
		menuItem[1][1].setMnemonic('C');
		menuItem[1][2]=new JMenuItem("粘贴(P)");
		menuItem[1][2].setMnemonic('P');
		menuItem[1][3]=new JMenuItem("查找(F)");
		menuItem[1][3].setMnemonic('F');
		menuItem[1][4]=new JMenuItem("替换(R)");
		menuItem[1][4].setMnemonic('R');
		menuItem[1][5]=new JMenuItem("全选(A)");
		menuItem[1][5].setMnemonic('A');
		menuItem[1][6]=new JMenuItem("时间/日期(T)");
		menuItem[1][6].setMnemonic('T');
		menuItem[2][0]=new JCheckBoxMenuItem("自动换行(W)");
		menuItem[2][0].setMnemonic('T');
		menuItem[2][1]=new JMenuItem(" 字体...");
		menuItem[2][1].setEnabled(false);
		menuItem[3][0]=new JCheckBoxMenuItem("状态栏(S)", true);
		menuItem[3][0].setMnemonic('S');
		menuItem[4][0]=new JMenuItem("关于(A) ...");
		menuItem[4][0].setMnemonic('S');
		popupMenuItem=new JMenuItem[4];
		popupMenuItem[0]=new JMenuItem("剪切(X)");
		popupMenuItem[0].setMnemonic('X');
		popupMenuItem[1]=new JMenuItem("复制(C)");
		popupMenuItem[1].setMnemonic('C');
		popupMenuItem[2]=new JMenuItem("粘贴(P)");
		popupMenuItem[2].setMnemonic('P');
		popupMenuItem[3]=new JMenuItem("全选(A)");
		popupMenuItem[3].setMnemonic('A');
		popupMenu=new JPopupMenu();
		for(int i=0; i<menu.length; i++)
		{
			menuBar.add(menu[i]);
			menu[i].setFont(defaultFont);
			for (int j=0; j<menuItem[i].length; j++)
			{
				menu[i].add(menuItem[i][j]);
				menuItem[i][j].addActionListener(this);
				menuItem[i][j].setFont(defaultFont);
				if (i==0 && j==3 || i==1 && j==2 || i==1 && j==4)
					menu[i].addSeparator();
			}
		}
		for (int i=0; i<popupMenuItem.length; i++)
		{
			popupMenu.add(popupMenuItem[i]);
			popupMenuItem[i].addActionListener(this);
			popupMenuItem[i].setFont(defaultFont);
			if (i==2)
				popupMenu.addSeparator();
		}
	}
	public void readFile(File file)
	{
		ta.setText("");
		try
		{
			BufferedReader in=new BufferedReader(new FileReader(file));
			String read;
			char[] readBuf=new char[20480];
			int n=0;
			while (true)
			{
				n=in.read(readBuf, 0, 20480);
				if (n==-1)
					break;
				read=new String(readBuf, 0, n);
				ta.append(read);
			}
			in.close();
			ta.setCaretPosition(0);
		}
		catch (IOException ioe)
		{
			JOptionPane.showMessageDialog(null,
				"I/O 错误:"+ioe+"。\n",
				"打开失败",
				JOptionPane.ERROR_MESSAGE);
		}
	}
	public void saveFile(File file)
	{
		try
		{
			FileWriter fw_out=new FileWriter(file);
			PrintWriter out=new PrintWriter(new BufferedWriter(fw_out));
			String outData=ta.getText();
			String[] outLine;
			outLine=outData.split("\n");
			for (int i=0; i<outLine.length; i++)
				out.print(outLine[i]+"\r\n");
			out.close();
		}
		catch (IOException ioe)
		{
			JOptionPane.showMessageDialog(null,
				"I/O 错误:"+ioe+"。\n",
				"打开失败",
				JOptionPane.ERROR_MESSAGE);
		}
	}
	public void open()
	{
		JFileChooser fc=new JFileChooser();
		if (fc.showOpenDialog(this)==JFileChooser.APPROVE_OPTION)
		{
			String _curFileName=fc.getSelectedFile().getAbsolutePath();
			File file=new File(_curFileName);
			if (file.exists())
			{
				curFileName=_curFileName;
				File f=new File(curFileName);
				setTitle(f.getName()+" - 记事本");
				changed=false;
				readFile(file);
			}
			else
				JOptionPane.showMessageDialog(null,
				file.getAbsolutePath()+"\n找不到文件。\n请检查所给的文件名是否正确。\n",
				"打开失败",
				JOptionPane.ERROR_MESSAGE);
		}
	}
	public void save()
	{
		if (curFileName.equals(""))
		{
			saveAs();
		}
		else
		{
			File file=new File(curFileName);
			saveFile(file);
			changed=false;
		}
	}
	public void saveAs()
	{
		JFileChooser fc=new JFileChooser();
		fc.setDialogTitle("另存为");
		if (fc.showSaveDialog(this)==JFileChooser.APPROVE_OPTION)
		{
			boolean overwrite=false;
			String _curFileName=fc.getSelectedFile().getAbsolutePath();
			File file=new File(_curFileName);
			if (file.exists())
			{
				int exit;
				exit=JOptionPane.showConfirmDialog(
					this,
					file.getAbsolutePath()+"已存在。\n要覆盖它吗?  ",
					"另存为",
					JOptionPane.YES_NO_OPTION);
				if (exit==JOptionPane.YES_OPTION)
					overwrite=true;
			}
			else
				overwrite=true;
			if (overwrite)
			{
				changed=false;
				saveFile(file);
				curFileName=_curFileName;
				File f=new File(curFileName);
				setTitle(f.getName()+" - 记事本");
			}
		}
	}
	public void closeAndSave()
	{
		String fName;
		if (changed)
		{
			if (curFileName.equals(""))
				fName="无标题";
			else
			{
				File f=new File(curFileName);
				fName=f.getName();
			}
			int exit=JOptionPane.showConfirmDialog(
				this,
				"  文件 "+fName+" 的文字可能已经改变。\n\n  想保存文件吗?",
				"记事本",
				JOptionPane.YES_NO_CANCEL_OPTION
			);
			if (exit==JOptionPane.NO_OPTION)
				System.exit(0);
			else if (exit==JOptionPane.YES_OPTION)
				save();
		}
		else
			System.exit(0);
	}
	public void actionPerformed(ActionEvent ae)
	{
		if (ae.getSource()==menuItem[0][0])
		{
			ta.setText("");
			curFileName="";
			setTitle("无标题 - 记事本");
			changed=false;
		}
		if (ae.getSource()==menuItem[0][1])
		{
			open();
		}
		if (ae.getSource()==menuItem[0][2])
		{
			save();
		}
		if (ae.getSource()==menuItem[0][3])
		{
			saveAs();
		}
		if (ae.getSource()==menuItem[0][4])
		{
			closeAndSave();
		}
		if (ae.getSource()==menuItem[1][0] || ae.getSource()==popupMenuItem[0])
		{
			ta.cut();
		}
		if (ae.getSource()==menuItem[1][1] || ae.getSource()==popupMenuItem[1])
		{
			ta.copy();
		}
		if (ae.getSource()==menuItem[1][2] || ae.getSource()==popupMenuItem[2])
		{
			ta.paste();
		}
		if (ae.getSource()==menuItem[1][3])
		{
			Searcher s=new Searcher(null, false, ta);
		}
		if (ae.getSource()==menuItem[1][4])
		{
			Replacer s=new Replacer(null, false, ta);
		}
		if (ae.getSource()==menuItem[1][5] || ae.getSource()==popupMenuItem[3])
		{
			ta.selectAll();
		}
		if (ae.getSource()==menuItem[1][6])
		{
			Date da=new Date();
			int h, m, s;
			h=da.getHours();
			m=da.getMinutes();
			s=da.getSeconds();
			String res1=(h<10?"0":"")+h+":"+(m<10?"0":"")+m+":"+(s<10?"0":"")+s;
			String res2=(da.getYear()+1900)+"-"+da.getMonth()+"-"+da.getDate();
			int index=ta.getCaretPosition();
			String str=ta.getText();
			String strTemp=str.substring(0, index)+res1+" "+res2+str.substring((index), str.length());
			ta.setText(strTemp);
			ta.setCaretPosition(index);
		}
		if (ae.getSource()==menuItem[2][0])
		{
			if (ta.getLineWrap())
			{
				ta.setLineWrap(false);
				menuItem[3][0].setEnabled(true);
				lblStatus.setVisible(((JCheckBoxMenuItem)menuItem[3][0]).getState());
			}
			else
			{
				ta.setLineWrap(true);
				lblStatus.setVisible(false);
				menuItem[3][0].setEnabled(false);
			}
		}
		if (ae.getSource()==menuItem[3][0])
		{
			if (lblStatus.isVisible())
			{
				lblStatus.setVisible(false);
			}
			else
			{
				menuItem[3][0].setText("状态栏");
				lblStatus.setVisible(true);
			}
		}
		if (ae.getSource()==menuItem[4][0])
		{
			JOptionPane.showMessageDialog(null,
				"版本号:1.0\n版权:厦门大学软件学院 黄炜 @ 2005",
				"关于 记事本",
				JOptionPane.INFORMATION_MESSAGE);
		}
	}
	public static void main(String[] args)
	{
		//设置界面为WindowsLookAndFeel
		try
		{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		}
		catch(Exception e) {
		}

		Notepad np=new Notepad();
		np.setSize(500, 500);
		np.setVisible(true);
	}
}

⌨️ 快捷键说明

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