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

📄 edit.java

📁 用JAVA编写的编辑器程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		
		//set Menu here
		mb=new MenuBar();
		f.setMenuBar(mb);
		
		mfile=new Menu("File");
		medit=new Menu("Edit");
		mabout=new Menu("About");
		
		mfile.add(new MenuItem("Open",new MenuShortcut(KeyEvent.VK_O)));
		mfile.add(new MenuItem("Save",new MenuShortcut(KeyEvent.VK_S)));
		mfile.add(new MenuItem("Save As"));
		mfile.addSeparator();
		mfile.add(new MenuItem("Exit",new MenuShortcut(KeyEvent.VK_W)));
		
		medit.add(new MenuItem("Find",new MenuShortcut(KeyEvent.VK_F)));
		medit.add(new MenuItem("Replace",new MenuShortcut(KeyEvent.VK_R)));
		medit.addSeparator();
		medit.add(new MenuItem("Select All",new MenuShortcut(KeyEvent.VK_A)));	
		medit.add(new MenuItem("Copy",new MenuShortcut(KeyEvent.VK_C)));
		medit.add(new MenuItem("Cut",new MenuShortcut(KeyEvent.VK_X)));
		medit.add(new MenuItem("Paste",new MenuShortcut(KeyEvent.VK_V)));
		
		mabout.add(new MenuItem("About Edit"));
		mabout.add(new MenuItem("About Me"));
		
		mb.add(mfile);
		mb.add(medit);
		mb.add(mabout);
		
		mfile.addActionListener(this);
		medit.addActionListener(this);
		mabout.addActionListener(this);
		
		//set FilePath and TextArea
		tfpath=new TextField();
		tfpath.setEditable(false);
		f.add("North",tfpath);
		f.add(ta,"Center");
		ta.addMouseListener(this);
		
    //set PopupMenu
		pm=new PopupMenu();
		pm.add(new MenuItem("Select All"));
		pm.add(new MenuItem("Copy"));
		pm.add(new MenuItem("Cut"));
		pm.add(new MenuItem("Paste"));
		pm.addSeparator();
		pm.add(new MenuItem("SetColor"));
		pm.addActionListener(this);
		ta.add(pm);
		
		//set Font Information 
		p=new Panel();
		p.setLayout(new FlowLayout(FlowLayout.LEFT,5,3));
		labsize=new Label("size:");
	  //add Font size
	  choicesize=new Choice();
	 	for(int i=10;i<50;i++)
		    choicesize.addItem(new Integer(i).toString());
	  choicesize.addItemListener(this);
	  
	  labblank=new Label("   ");
		cbbold=new Checkbox("Bold");
		cbbold.addItemListener(this);
		cbitalic=new Checkbox("Italic");
		cbitalic.addItemListener(this);
		bclearall=new Button("ClearAll");
		bclearall.addActionListener(this);
		bcolor=new Button("Set Color");
		bcolor.addActionListener(this);
		bsetkey=new Button("Set Key ");
		bsetkey.addActionListener(this);
		p.add(labsize);
		p.add(choicesize);
		p.add(labblank);
		p.add(cbbold);
		p.add(cbitalic);
		p.add(bclearall);
		p.add(bcolor);
		p.add(bsetkey);
		
		f.add("South",p);
	
	  f.setVisible(true);
	}
	public static void main(String[] args)
	{
		new EditFace();
	}
  public void windowOpened(WindowEvent e)
  {
  	ta.setFont(new Font("Dialog",0,18));
  	font1=ta.getFont();
  	tfpath.setFont(font1);
  	cbbold.setState(font1.isBold());
  	cbitalic.setState(font1.isItalic());
  }
	public void windowClosing(WindowEvent e)
	{
		System.exit(0);
	}
	public void actionPerformed(ActionEvent e)
	{
		//Open File
		if(e.getActionCommand()=="Open")
		{
			FileOpen fo=new FileOpen();
			fo.myFileOpen();
		}
		
		//Save File
		if(e.getActionCommand()=="Save")
		{
			if(tfpath.getText().equals(""))
			{
				FileSave fs=new FileSave();
				fs.myFileSave();
			}
			else
			{
				FileSave fs=new FileSave();
				fs.myFileSave(tfpath.getText());
			}
		}
		//Save As a File
		if(e.getActionCommand()=="Save As")
		{
			FileSave fs=new FileSave();
			fs.myFileSave();
		}
		
		if(e.getActionCommand()=="Exit")
		{
			System.exit(0);
		}
		
		if(e.getSource()==bclearall)
		{
			tfpath.setText("");
			ta.setText("");
		}
	}
	public void itemStateChanged(ItemEvent e)
	{
		int size=font1.getSize();
		int style1=font1.getStyle();
		if(e.getSource()==choicesize) size=choicesize.getSelectedIndex()+10;
		if(e.getSource()==cbbold) style1=style1^1;
		if(e.getSource()==cbitalic) style1=style1^2;
		font1=new Font(font1.getName(),style1,size);
		ta.setFont(font1);
	}
	public void mousePressed(MouseEvent mep)
	{
		if(mep.getModifiers()==mep.BUTTON3_MASK)
		    pm.show(ta,mep.getX(),mep.getY());
	}
	public void mouseClicked(MouseEvent mec){}
	public void mouseReleased(MouseEvent mer){}
	public void mouseEntered(MouseEvent mee){}
	public void mouseExited(MouseEvent mex){}
	public void mouseDragged(MouseEvent med){}

  //打开文件,内部类
  class FileOpen
  {
  	public void myFileOpen()
  	{
  		
  	  fd=new FileDialog(f,"File Open",FileDialog.LOAD);
			fd.setVisible(true);
			if((fd.getDirectory()!=null)&&(fd.getFile()!=null))
			{
				ta.setText("");
				try
				{
			  	file1=new File(fd.getDirectory(),fd.getFile());
			  	tfpath.setText(file1.toString());
			  	FileReader fr=new FileReader(file1);
			  	BufferedReader br=new BufferedReader(fr);
			  	String content="";
			  	String aline;
			  	while((aline=br.readLine())!=null)
			  	      content+=(aline+'\n');
			  	ta.setText(content);
			  	fr.close();
			  	br.close();
			  }
			  catch(Exception ee)
			  {
			  	System.err.println(ee);
			  }
			}
		}
	}
	//保存文件,内部类
 	class FileSave
	{
		private File file1;
		public void myFileSave(String filestr)
		{
			this.file1=new File(filestr);
			try
			{
				FileWriter fw=new FileWriter(file1);
				fw.write(ta.getText());
				fw.close();
			}
			catch(IOException ioe)
			{
				System.err.println(ioe);
			}
		}
	  public void myFileSave()
	  {
	  	fd=new FileDialog(f,"SAVE FILE",FileDialog.SAVE);
	  	fd.setVisible(true);
			if((fd.getDirectory()!=null)&(fd.getFile()!=null))
			{
				file1=new File(fd.getDirectory(),fd.getFile());
				tfpath.setText(file1.toString());
				try
			  {
			 	
			  	FileWriter fw=new FileWriter(file1);
			  	fw.write(ta.getText());
		  		fw.close();
			  }
			  catch(IOException ioe)
			  {
			  	System.err.println(ioe);
			  }
			}
		}
	}		
}

//添加关键字类
class SetKey extends WindowAdapter implements ActionListener
{
	Frame fsetkey;
	List l;
	TextField tfkey;
	Button badd,bdelete;
	Panel p,p1,p2;
	String str="",aline;
	int i;
	File files;
	public SetKey()
	{
		fsetkey=new Frame("Add Key--Test Edition");
		fsetkey.setSize(180,200);
		fsetkey.setLocation(200,100);
		
		badd=new Button("AddKey");
		bdelete=new Button("Delete");
		badd.addActionListener(this);
		bdelete.addActionListener(this);
		tfkey=new TextField(20);
		p1=new Panel();
		p1.setLayout(new GridLayout(1,2));
		p1.add(bdelete);
		p1.add(badd);
		p2=new Panel();
		p2.add(tfkey);
		p=new Panel();
		p.setLayout(new GridLayout(2,1));
		p.add(p1);
		p.add(p2);
		
		fsetkey.add(p,"North");
		
		l=new List();
		fsetkey.addWindowListener(this);
		fsetkey.add(l,"Center");
		
		try
		{
			 files=new File(".","key.dat");
		   FileReader fr=new FileReader(files);
	     BufferedReader br=new BufferedReader(fr);
		   while((aline=br.readLine())!=null)
		      l.add(aline);
		   fr.close();
		   br.close();
		}
		catch(FileNotFoundException e)
		{
			try{
		    	FileOutputStream fos=new FileOutputStream("key.dat");
		    	fos.close();
		  }catch(Exception ee)
		  {
		  	System.err.println(ee);
		  }
		}
		catch(Exception eee)
		{
			System.out.println(eee);
		}
	}
	public void setVisible(boolean b)
	{
		fsetkey.setVisible(b);    
	}
	public void actionPerformed(ActionEvent e)
	{
		
		if(e.getSource()==badd)
		{
			str=tfkey.getText();
			if(!str.equals(""))
			{  for(i=0;i<l.getItemCount();i++)
			   {
			    	if(str.equals(l.getItem(i)))
			    	{
			    		l.select(i);
			    		break;
			    	}
			   }
		 if(i==l.getItemCount())
		 {  
		 	 l.add(str);
		 	 l.select(i);  
		   savelist();
		  }      
	   }
   	}
		if(e.getSource()==bdelete)
		  if(l.getSelectedIndex()!=-1)
		  {  
		  	 l.remove(l.getSelectedItem());
		  	 savelist();
		  }
	}
	public void savelist()
	{
		try
    {  
  	    files=new File(".","key.dat");
	  	  FileWriter fw=new FileWriter(files);
	  	  String s="";
	      for(int ii=0;ii<l.getItemCount();ii++)
	          s+=l.getItem(ii)+"\n";
	      fw.write(s);
	      fw.close();
	   }catch(Exception ee)
	   {
	   	  System.err.println(ee);
	   }
	}	
  public void windowClosing(WindowEvent e)
  {
  	fsetkey.setVisible(false);
  }
  public static void main(String args[])
  {
  	SetKey sk=new SetKey();
  	sk.setVisible(true);
  }
}
		
		

//设置字体颜色
class SetColor extends JPanel implements ChangeListener,ActionListener
{
	protected JPanel p;
	protected JButton b;
	protected JColorChooser tcc;
	protected JLabel banner;
	protected static JFrame ff;
	protected Color newcolor;
	public SetColor()
	{
		banner=new JLabel("欢迎使用颜色控制器",JLabel.CENTER);
		b=new JButton("确定");
		b.addActionListener(this);
		p=new JPanel();
		p.setLayout(new BorderLayout());
		p.add("Center",banner);
		p.add("South",b);
		tcc=new JColorChooser(banner.getForeground());
		tcc.getSelectionModel().addChangeListener(this);
		tcc.setBorder(BorderFactory.createTitledBorder("chooser color"));
	  add(p);
		add(tcc,BorderLayout.PAGE_END);
		JFrame.setDefaultLookAndFeelDecorated(true);
	  ff=new JFrame("COLORCHOOSER");
		ff.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
	}
	public void stateChanged(ChangeEvent e)
	{
		newcolor=tcc.getColor();
		banner.setForeground(newcolor);
	}
	public static void main(String[] args)
	{
		
		SetColor newContentPane=new SetColor();
		newContentPane.set(newContentPane);
	}
	public void set(SetColor nc)
	{ 
		nc.setOpaque(true);
		ff.setContentPane(nc);
		ff.pack();
	}		
	public void setVisible(boolean b)
	{
		ff.setVisible(b);
	}
	public void actionPerformed(ActionEvent e)
	{
		newcolor=tcc.getColor();
		ff.setVisible(false);
	}		
}
	
//程序基本介绍
class About extends WindowAdapter implements ItemListener
{ 
	private Frame f;
	private TextArea ta;
	private Panel p;
	private CheckboxGroup cg;
	private Checkbox cbabout,cbfont,cbcolor,cbkey,cbedit,cbfind,cbio,cbaboutme;
	private String s;
	public About()
	{
		f=new Frame("About Edit--Test Edition");
		f.setSize(500,200);
		f.setLocation(150,100);
		f.setBackground(Color.lightGray);
		
		ta=new TextArea("",10,10,1);
		ta.setEditable(false);
		f.add(ta,"Center");
		
		p=new Panel();
		p.setLayout(new FlowLayout(FlowLayout.LEFT));
		
		cg=new CheckboxGroup();
		cbabout=new Checkbox("About",cg,true);
		cbfont=new Checkbox("Font",cg,false);
		cbcolor=new Checkbox("Color",cg,false);
		cbkey=new Checkbox("Key",cg,false);
		cbedit=new Checkbox("Edit",cg,false);
		cbfind=new Checkbox("FindReplace",cg,false);
		cbio=new Checkbox("I/O",cg,false);
		cbaboutme=new Checkbox("About Me",cg,false); 
		
		cbabout.addItemListener(this);
		cbfont.addItemListener(this);
		cbcolor.addItemListener(this);
		cbkey.addItemListener(this);
		cbedit.addItemListener(this);
		cbfind.addItemListener(this);
		cbio.addItemListener(this);
		cbaboutme.addItemListener(this);
		
		p.add(cbabout);
		p.add(cbfont);
		p.add(cbcolor);
		p.add(cbkey);
		p.add(cbedit);
		p.add(cbfind);
		p.add(cbio);
	    	p.add(cbaboutme);
		
		f.add(p,"South");
		f.addWindowListener(this);
		
		s="实现功能如下:"+'\n'+"打开,保存文件,自动备份文件;"+
		'\n'+"全选,剪贴板功能;"+'\n'+"设置字体,颜色;"+
		'\n'+"查找,替换功能;"+'\n'+"添加关键字;"+'\n'+
		'\n'+"待改进或未实现功能:"+'\n'+"打开文件速度较慢;"+'\n'+
		"自动更新"+'\n'+"不能为关键字着色;";
		ta.setText(s);
   }
   public void windowClosing(WindowEvent e)
   {
   	   f.setVisible(false);
   }
   public void setVisible(boolean b)
   {
   	   f.setVisible(b);
   }	
   public static void main(String[] args)
   {
   	   About a=new About();
   	   a.setVisible(true);   	   
   }
   
   //Itemlistener	
   public void itemStateChanged(ItemEvent e)
   {
   	  if(e.getSource()==cbabout)
   	  {
   	  	s="实现功能如下:"+'\n'+"打开,保存文件,自动备份文件;"+
		'\n'+"全选,剪贴板功能;"+'\n'+"设置字体,颜色;"+
		'\n'+"查找,替换功能;"+'\n'+"添加关键字;"+'\n'+
		'\n'+"待改进或未实现功能:"+'\n'+"打开文件速度较慢;"+'\n'+
		"自动更新"+'\n'+"不能为关键字着色;";
   	  }
   	  if(e.getSource()==cbfont)
   	  {
   	  	 	s="设置字体:"+'\n'+'\n'+"点击复选框“Bold“,文本区内字体将被设为粗体;"+'\n'+"点击复选框”Italic“,文本区内字体将被设为斜体;"+'\n'+"选择框里的数字代表文字的大小。";	  	
   	  }
   	  if(e.getSource()==cbcolor)
   	  {
   	  	 s="设置颜色:"+'\n'+'\n'+"点击按钮”setcolor“,或者右键选择”set color“,在弹出的对话框里选择自己喜欢的颜色,按确定,然后点击文本区。"+'\n'+"这是一个bug,需要改进!"+'\n'+"这里使用了swing包,与整个程序的awt氛围不和。";
   	  }
   	  if(e.getSource()==cbkey)
   	  {
   	  	 s="设置关键字:"+'\n'+'\n'+"点击按钮”setkey“,在弹出的框架里可以加添或者删除关键字。"+'\n'+"目前为关键字着色这个功能还没有实现,待改进~~~";
   	  }
   	  if(e.getSource()==cbedit)
   	  {
   	  	 s="编辑功能:"+'\n'+'\n'+"选择菜单栏或者右键里的select all,copy,cut,paste,均可实现相应功能;"+'\n'+"均设置了快捷键。";
   	  }
   	  if(e.getSource()==cbfind)
   	  {
   	  	 s="查找和替换:"+'\n'+'\n'+"查找和替换都是从当前光标位置开始搜寻起,也就是意味着即使光标前面有要查找的字符川,也不会被找到,具体信息在”FindAndReplace“对话框里可以看到;"+'\n'+"设置了快捷键。";
   	  }
   	  if(e.getSource()==cbio)
   	  {
   	  	 s="文件打开与保存:"+'\n'+'\n'+"一般只能打开文本类型文件,且打开速度教慢(需改进);"+'\n'+"”save“保存在当前文件,”save as“保存为另一文件;"+'\n'+"能自动备分文件(文件名后加.bak);"+'\n'+"均设置了快捷键;"+'\n'+"未设置文件过滤器。";
   	  }
   	  if(e.getSource()==cbaboutme)
   	  {
   	  	 s="email:wyliufeng521@163.com,lhlf2002@yahoo.com.cn"+'\n'+"QQ:164561963"+'\n'+"重庆大学2002级网络工程";
   	  }
   	  ta.setText(s);
   }
}
		
		
		
	

⌨️ 快捷键说明

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