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

📄 txtedit2.java

📁 一个小的文件编辑器
💻 JAVA
字号:
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.JOptionPane;
public class txtedit2
{
	public static void main(String args[])
	{
		MySimpleTextEditor editor=new MySimpleTextEditor();
		editor.setSize(300,200);
		editor.setVisible(true);
		editor.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent we)
			{System.exit(0);}
		});
	}
}
class MySimpleTextEditor extends Frame implements ActionListener
{
	private MenuBar myBar=new MenuBar();
	private Menu fileMenu,editMenu,cutsMenu;

	private Menu fonteditMenu,name,style,size,color;

	private MenuItem cutItem,copyItem,pasteItem,selectAllItem;
	private MenuItem recentcutItem;
	private MenuItem newItem,quitItem,openItem,saveItem;

	private MenuItem srf,dia,mon;
	private MenuItem s1,s2,s3,s4;
	private MenuItem cr,cg,cb,cd;
	private MenuItem gr,gg,gb,gp;
 	public MenuItem plain,bold,italic;
 	public Menu backg;
 //	private MenuItem plain,bold,italic;


	private TextArea mainWorkWindow=new TextArea(10,15);//文本区域
	private String placeHolder=" ";
	PopupMenu popM=new PopupMenu();
	private Vector recentCuts=new Vector();

	int fontsize1=14;
	static int fontstyle1=Font.PLAIN;
	String fontname1="Dialog";


	public MySimpleTextEditor()
	{

		super("我的文本编辑器");
		setLayout(new BorderLayout());
		add("Center",mainWorkWindow);
		setMenuBar(myBar);//必要的
		initFileMenu();
		initEditMenu();
		initFontMenu();
		initPopMenu();
		mainWorkWindow.add(popM);
		mainWorkWindow.addMouseListener(new HandleMouse(this));
		addWindowListener(new MyWindowListener());



	}


	private void initEditMenu()
	{
		editMenu=new Menu("编辑");
		myBar.add(editMenu);
		cutItem=new Menu("剪切");
		cutItem.addActionListener(this);
		editMenu.add(cutItem);
		copyItem=new MenuItem("复制");
		copyItem.addActionListener(this);
		editMenu.add(copyItem);
		pasteItem=new MenuItem("粘贴");
		pasteItem.addActionListener(this);
		editMenu.add(pasteItem);
		editMenu.addSeparator();
		selectAllItem=new MenuItem("全选");
		selectAllItem.addActionListener(this);
		editMenu.add(selectAllItem);
		editMenu.addSeparator();
		cutsMenu=new Menu("剪贴板");
		editMenu.add(cutsMenu);
	}



	//初始化编辑菜单


	private void initFileMenu()
	{
		fileMenu=new Menu("文件");
		myBar.add(fileMenu);
		newItem=new MenuItem("新建");
		newItem.setShortcut(new MenuShortcut('N'));
		newItem.addActionListener(this);
		fileMenu.add(newItem);
		openItem=new MenuItem("打开");
		openItem.addActionListener(this);
		openItem.setEnabled(true);
		fileMenu.add(openItem);
		saveItem=new MenuItem("保存");
		saveItem.setEnabled(true);
		saveItem.addActionListener(this);
		fileMenu.add(saveItem);
		fileMenu.addSeparator();
		quitItem=new MenuItem("退出");
		quitItem.addActionListener(this);
		fileMenu.add(quitItem);
	}

	//初始化文件菜单

	private void initFontMenu()
	{
		fonteditMenu=new Menu("字体");
		name=new Menu("字体名");
		srf=new MenuItem("serif");
		dia=new MenuItem("dialog");
		mon=new MenuItem("monospaced");
		srf.addActionListener(this);
		dia.addActionListener(this);
		mon.addActionListener(this);
		name.add(srf);
		name.add(dia);
		name.add(mon);
		name.addSeparator();
		fonteditMenu.add(name);
		fonteditMenu.addSeparator();
		myBar.add(fonteditMenu);

		style=new Menu("格式");
	/*	plain=new CheckboxMenuItem("普通");
		bold=new CheckboxMenuItem("粗体");
		italic=new CheckboxMenuItem("斜体");*/
		

	
		plain=new MenuItem("普通");
		bold=new MenuItem("粗体");
		italic=new MenuItem("斜体");
		plain.addActionListener(this);
		bold.addActionListener(this);
		italic.addActionListener(this);
		style.add(plain);
		style.add(bold);
		style.add(italic);
		style.addSeparator();
		fonteditMenu.add(style);
		fonteditMenu.addSeparator();

		size=new Menu("字体大小");
		s1=new MenuItem("14");
		s2=new MenuItem("16");
		s3=new MenuItem("18");
		s4=new MenuItem("25");
		size.add(s1);
		size.add(s2);
		size.add(s3);
		size.add(s4);
		s1.addActionListener(this);
		s2.addActionListener(this);
		s3.addActionListener(this);
		s4.addActionListener(this);
		fonteditMenu.add(size);
		fonteditMenu.addSeparator();

		color=new Menu("颜色");
		cr=new MenuItem("红色");
		cg=new MenuItem("绿色");
		cb=new MenuItem("蓝色");
		cd=new MenuItem("黑色");
		color.add(cr);
		color.add(cg);
		color.add(cb);
		color.add(cd);
		cr.addActionListener(this);
		cg.addActionListener(this);
		cb.addActionListener(this);
		cd.addActionListener(this);
		fonteditMenu.add(color);
		fonteditMenu.addSeparator();



	}

	public void initPopMenu()
	{
		backg=new Menu("背景色");
		gr=new MenuItem("红色");
		gg=new MenuItem("绿色");
		gb=new MenuItem("蓝色");
		gp=new MenuItem("黄色");
		
		backg.add(gr);
		backg.add(gg);
		backg.add(gb);
		backg.add(gp);
		popM.add(backg);
		gr.addActionListener(this);
		gg.addActionListener(this);
		gb.addActionListener(this);
		gp.addActionListener(this);
		mainWorkWindow.add(popM);

	}


	public void actionPerformed(ActionEvent e)

	{

		if(!(e.getSource()instanceof MenuItem))
		return;
		//不是菜单项返回空

		MenuItem m=(MenuItem)e.getSource();
		//确定是菜单项

		if(m==quitItem)
		{
			dispose();
			System.exit(0);
		}//退出菜单

		else if(m==cutItem)
		{
			placeHolder=mainWorkWindow.getSelectedText();
			mainWorkWindow.replaceRange("",mainWorkWindow.getSelectionStart(),
			mainWorkWindow.getSelectionEnd());
			addRecentCut(placeHolder);
		}//剪切菜单
		
		
		//剪切为什么不能用?


		else if(m==copyItem)
		{
			placeHolder=mainWorkWindow.getSelectedText();
		}

		else if(m==pasteItem)
		{
			mainWorkWindow.insert(placeHolder,mainWorkWindow.getCaretPosition());
		}
		//insert()
		else if(m==selectAllItem)
		{
			mainWorkWindow.selectAll();
		}

	
		else if(m==newItem)
		{
			
			Frame f=new Frame("FileDialog");
			
			JOptionPane.showConfirmDialog(f,"你要保存已更改的文件吗?");
			
			
			FileDialog d;
			d=new FileDialog(f,"FileDialog",FileDialog.SAVE);
			d.setVisible(true);
			String filename=d.getFile();
			File openf=new File(filename);
			try{
				RandomAccessFile fw=new RandomAccessFile(openf,"rw");
				String s=mainWorkWindow.getText();
				fw.writeChars(s);
				fw.close();
				}catch(Exception er){}
				mainWorkWindow.setText("");

		}//怎么选择里面的按牛?
		
		
		else if(m==saveItem)
		{
			Frame f=new Frame("FileDialog");
			FileDialog d;
			d=new FileDialog(f,"FileDialog",FileDialog.SAVE);
			d.setVisible(true);
			String filename=d.getFile();
			File openf=new File(filename);
			try{
				RandomAccessFile fw=new RandomAccessFile(openf,"rw");
				String s=mainWorkWindow.getText();
				fw.writeChars(s);
				fw.close();
				}catch(Exception er){}

		}
		
			else if(m==openItem)
		{
			Frame f=new Frame("FileDialog");//此语句
			FileDialog d;
			d=new FileDialog(f,"FileDialog",FileDialog.LOAD);
			d.setVisible(true);
			String filename=d.getFile();//获取文件名
			File openf=new File(filename);
			String s="";
			try{
				RandomAccessFile fr=new RandomAccessFile(openf,"r");
				char ch;

				while((ch=fr.readChar())!=-1)
				{
					s=s+ch;
				}
				//把文件内容读出
				fr.close();
				}catch(Exception er){}
				mainWorkWindow.setText(s);//文件内容写入
		}
		

		else if(m==srf)
		{
			fontname1="Serif";
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			repaint();
		}
		else if(m==srf)
		{
			fontname1="Dialog";
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			repaint();
		}
		else if(m==mon)
		{
			fontname1="Monospaced";
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			repaint();
		}
		else if(m==plain)
		{
			fontstyle1=Font.PLAIN;
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			repaint();
		}
		else if(m==bold)
		{
			fontstyle1=Font.BOLD;
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			repaint();
		}
		else if(m==italic)
		{
			fontstyle1=Font.ITALIC;
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1+Font.BOLD,fontsize1));
			repaint();
		}
		else if(m==s1)
		{
		
			mainWorkWindow.setFont(Font.getFont("34")); 
	
		}

		/*else if(m==s1)
		{
			fontsize1=Integer.parseInt(s1.getActionCommand());
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
	
		}*/

		else if(m==s2)
		{
			fontsize1=Integer.parseInt(s2.getActionCommand());
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));

			repaint();
		}
		else if(m==s3)
		{
			fontsize1=Integer.parseInt(s3.getActionCommand());
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			repaint();
		}
		else if(m==s4)
		{
			fontsize1=Integer.parseInt(s4.getActionCommand());
			mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));

			repaint();
		}
		else if(m==cr)
		{
			mainWorkWindow.setForeground(Color.red);
		}
    	else if(m==cg)
		{
			mainWorkWindow.setForeground(Color.green);

		}
    	else if(m==cb)
		{
			mainWorkWindow.setForeground(Color.blue);
		}
    	else if(m==cd)
		{
			mainWorkWindow.setForeground(Color.black);
		}
    	else if(m==gr)
		{
			mainWorkWindow.setBackground(Color.red);
		}
    	else if(m==gg)
		{
			mainWorkWindow.setBackground(Color.green);
		}
    	else if(m==gb)
		{
			mainWorkWindow.setBackground(Color.blue);
		}
    	else if(m==gp)
		{
			mainWorkWindow.setBackground(Color.orange);
		}

		
		else if(m==cr)
		{
			setForeground(Color.red);
			repaint();
		}
	}

	

		public void addRecentCut(String cut)
		{
			recentCuts.insertElementAt(cut,0);
			cutsMenu.removeAll();
			for(int i=0;i<recentCuts.size();i++)
			{
				MenuItem item=new MenuItem((String)recentCuts.elementAt(i));
				cutsMenu.add(item);
				mainWorkWindow.setFont(new Font(fontname1,fontstyle1,fontsize1));
			}
		}

}
class HandleMouse extends MouseAdapter
	{
		MySimpleTextEditor m_Parent;
		HandleMouse(MySimpleTextEditor mf)
		{
			m_Parent=mf;
		}
		public void mouseReleased(MouseEvent e)
		{
			if(e.isPopupTrigger())
				m_Parent.popM.show((Component)e.getSource(),e.getX(),e.getY());
		}

	}


class MyWindowListener extends WindowAdapter
{
	public void windowClosing(WindowEvent e)
	{System.exit(1);
	}
}

//1  checkboxMenuItem能用在fram中吗

⌨️ 快捷键说明

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