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

📄 texteditor.java

📁 使用Java编写的一个简单的文本编辑器
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;

class  TextEditor extends Frame
{	Dialog d;
	
	MenuBar menubar=new MenuBar();

	Menu filefile=new Menu("文件");
	Menu editedit=new Menu("工具");
	Menu helphelp=new Menu("帮助");
	MenuItem[] file=
	{
		new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)),
		new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O)),
		new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)),
		new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X))
	};
	MenuItem[] edit=
	{
		new MenuItem("统计",new MenuShortcut(KeyEvent.VK_C)),
		new MenuItem("翻转",new MenuShortcut(KeyEvent.VK_R))
	};
	MenuItem[] help=
	{
		new MenuItem("帮助",new MenuShortcut(KeyEvent.VK_H)),
		new MenuItem("关于",new MenuShortcut(KeyEvent.VK_A))
	};
	TextArea text=new TextArea(300,300);
	public TextEditor(String s)
	{
		super(s);
		ML ml=new ML();
		file[0].setActionCommand("新建");
		file[0].addActionListener(ml);
		file[1].setActionCommand("打开");
		file[1].addActionListener(ml);
		file[2].setActionCommand("保存");
		file[2].addActionListener(ml);
		file[3].setActionCommand("退出");
		file[3].addActionListener(ml);
		edit[0].setActionCommand("统计");
		edit[0].addActionListener(ml);
		edit[1].setActionCommand("翻转");
		edit[1].addActionListener(ml);
		help[0].setActionCommand("帮助");
		help[0].addActionListener(ml);
		help[1].setActionCommand("关于");
		help[1].addActionListener(ml);
		filefile.add(file[0]);
		filefile.add(file[1]);
		filefile.add(file[2]);
		filefile.addSeparator();
		filefile.add(file[3]);
		editedit.add(edit[0]);
		editedit.add(edit[1]);
		helphelp.add(help[0]);
		helphelp.add(help[1]);
		menubar.add(filefile);
		menubar.add(editedit);
		menubar.add(helphelp);
		setMenuBar(menubar);
		text.setEditable(true);
		add(text,BorderLayout.CENTER);
	}
	class ML implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			MenuItem target=(MenuItem)e.getSource();
			String actionCommand=target.getActionCommand();
			if(actionCommand.equals("新建"))
			{
				text.setText("");
			}
			else if(actionCommand.equals("打开"))
			{
				Frame fr1=new Frame("Border Layout");
				FileDialog dr1=new FileDialog(fr1,"打开文件");
				dr1.setVisible(true);
				String dirname=dr1.getDirectory();
				String fname=dr1.getFile();
				fr1.setSize(200,200);
				fr1.setVisible(false);
				if(fname!=null)
				{
					StringBuffer bfl=new StringBuffer(dirname);
					bfl.append("\\").append(fname);
					String myfile=bfl.toString();
					try
					{
						String c;
						BufferedReader sfl=new BufferedReader(new FileReader(myfile));
						text.setText("");
						while((c=sfl.readLine())!=null)
						text.append(c+"\n");
						sfl.close();
					}
					catch(IOException er)
					{
						er.printStackTrace();
			            		System.out.println("I/O Error!");
					}

					System.out.println("文件名:"+myfile);
				}
				fr1.dispose();
			}
			else if(actionCommand.equals("保存"))
			{
				Frame fr1=new Frame("Border Layout");
				FileDialog dr1=new FileDialog(fr1,"保存文件");
				dr1.setVisible(true);
				String dirname=dr1.getDirectory();
				String fname=dr1.getFile();
				fr1.setSize(200,200);
				fr1.setVisible(false);
				if(fname!=null)
				{
					StringBuffer bf1=new StringBuffer(dirname);
					bf1.append("\\").append(fname);
					String myfile=bf1.toString();
					try
					{
						PrintWriter dfl=new PrintWriter(new FileWriter(myfile));
						dfl.println(text.getText());
						dfl.close();
					}
					catch(IOException er)
					{
						er.printStackTrace();
						System.out.println("IO Error!");
					}
					System.out.println("文件名:"+myfile);
				}
				fr1.dispose();

			}
			else if(actionCommand.equals("退出"))
			{
				dispatchEvent(new WindowEvent(TextEditor.this,WindowEvent.WINDOW_CLOSING));
			}
			else if(actionCommand.equals("统计"))
			{
				int n,nn=0;
				int i;
				String temp1=text.getText();
				n=temp1.length();
				char t[]=temp1.toCharArray();
				for(i=0;i<n;i++)
				if(t[i]=='\n')
				nn++;
				Frame fr2=new Frame("Count");
				d=new Dialog(fr2,"统计",false);
				Label l=new Label("");
				l.setText("字符数(不包括换行符):"+String.valueOf(n-nn)+" 换行符:"+nn);
				d.add(l,BorderLayout.CENTER);
				d.pack();
				d.setVisible(true);
				d.addWindowListener(new WindowAdapter()
				{
					public void windowClosing(WindowEvent e)
					{
						d.dispose();
					}
				});
				System.out.println(n);
			}
			else if(actionCommand.equals("翻转"))
			{
				//text.setText("");
				try
				{
					PrintWriter dfl=new PrintWriter(new FileWriter("$$$.tmp"));
					dfl.println(text.getText());
					dfl.close();
				}
				catch(IOException er)
				{
					er.printStackTrace();
					System.out.println("IO Error!");
				}
				//System.out.println("文件名:$$$.tmp");
				try
				{
					String temp1,temp2;
					String c;
					BufferedReader sfl=new BufferedReader(new FileReader("$$$.tmp"));
					text.setText("");
					while((c=sfl.readLine())!=null)						
					{
						temp2="";
						temp1=c;
						int n=c.length();
						char temp_char[]=temp1.toCharArray();
						//System.out.println(n);
						for(int i=n-1;i>=0;i--)
						temp2+=temp_char[i];
						//System.out.println(temp2);
						if(temp2!="")
						text.append(temp2+'\n');
					}
					sfl.close();
				}
				catch(IOException er)
				{
					er.printStackTrace();
					System.out.println("I/O Error!");
				}
			}
			else if(actionCommand.equals("帮助"))
			{
			}
			else if(actionCommand.equals("关于"))
			{
				Frame fr1=new Frame("About");
				d=new Dialog(fr1,"关于",true);
				Label About=new Label("Designed for One, Designed for One Trillion");
				d.add(About,BorderLayout.CENTER);
				d.pack();
				d.setVisible(true);
				d.addWindowListener(new WindowAdapter()
				{
					public void windowClosing(WindowEvent e)
					{
						d.setVisible(false);
					}
				}
				);
			}
		}
	}
	public static void main(String[] args)
	{
		TextEditor f=new TextEditor("记事本");
		f.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		}
		);
		f.setSize(600,400);
		f.setVisible(true);
	}
}

⌨️ 快捷键说明

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