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

📄 jshi.java

📁 用java程序编写的一个能够实现记事本功能的源文件
💻 JAVA
字号:
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
class Windows extends JFrame implements ActionListener
{
	JPopupMenu rmenu;
	JMenuBar menubar;    //声明菜单项
	JToolBar toolbar;    //声明工具栏 
	JMenu menu1,menu2,menu3;//声明三个菜单
	JTextArea text=new JTextArea();//声明并创建一个文本框
	JFileChooser filechooser;// 声明文件选择对话框
	JButton buttonNew,buttonOpen,buttonSave,buttonCut,buttonCopy,buttonPaste;
	Icon iconNew,iconOpen,iconSave,iconCut,iconCopy,iconPlaster;
	JMenuItem itemNew,itemOpen,itemSave,itemCut,itemCopy,itemPaste,ritemCut,ritemCopy,ritemPaste,itemHelp;  //声明子菜单
	Windows(String s)
	{
		super(s);
		setSize(500,450);
		setLocation(150,150);
		setVisible(true);
		menubar=new JMenuBar();
		Container c=getContentPane();
		JPanel panel=new JPanel(new BorderLayout());
		c.add(panel);
////////////////////////////   菜单项   //////////////////////////////////////		
		menu1=new JMenu("文件");
		itemNew=new JMenuItem("新建",new ImageIcon("new.gif"));
		itemOpen=new JMenuItem("打开",new ImageIcon("open.gif"));
		itemSave=new JMenuItem("保存",new ImageIcon("save.gif"));
		
		rmenu=new JPopupMenu();			
		ritemCut=new JMenuItem("剪切",new ImageIcon("cut.gif"));
		ritemCopy=new JMenuItem("复制",new ImageIcon("copy.gif"));
		ritemPaste=new JMenuItem("粘贴",new ImageIcon("plaster.gif"));
		rmenu.add(ritemCut);
		rmenu.add(ritemCopy);
		rmenu.add(ritemPaste);

		itemNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));///快捷键
		itemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));///快捷键
		itemSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));///快捷键
		
		menubar.add(menu1);
		menu1.add(itemNew);
		menu1.add(itemOpen);
		menu1.addSeparator();// 将一个分隔线添加到菜单的当前位置
		menu1.add(itemSave);

		menu2=new JMenu("编辑");
		itemCut=new JMenuItem("剪切",new ImageIcon("cut.gif"));
		itemCopy=new JMenuItem("复制",new ImageIcon("copy.gif"));
		itemPaste=new JMenuItem("粘贴",new ImageIcon("plaster.gif"));
		itemCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));	
		itemCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));		
		itemPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));	
		
		menubar.add(menu2);
		menu2.add(itemCut);
		menu2.add(itemCopy);
		menu2.add(itemPaste);	

		menu3=new JMenu("帮助");
		itemHelp=new JMenuItem("帮助主题");
		menu3.add(itemHelp);
		menubar.add(menu3);
		setJMenuBar(menubar);
		
		text.addMouseListener(new MouseAdapter()
								{
									
                                 public void mousePressed(MouseEvent e)
                                 {
                                     if(e.getModifiers()==InputEvent.BUTTON3_MASK)
                                      {
                                         rmenu.show(text,e.getX(),e.getY());
                                      }
                                  }			
								}
							 );////////右击弹出菜单
		
		itemNew.addActionListener(this);     ////监听器
		itemOpen.addActionListener(this);    ////监听器
		itemSave.addActionListener(this);    ////监听器
		itemCut.addActionListener(this);     ////监听器
		itemCopy.addActionListener(this);    ////监听器
		itemPaste.addActionListener(this);   ////监听器
		itemHelp.addActionListener(this);    ////监听器
		ritemCut.addActionListener(this);    ////监听器
		ritemCopy.addActionListener(this);   ////监听器
		ritemPaste.addActionListener(this);  ////监听器
/////////////////////////      工具栏   //////////////////////////////////////	
		toolbar=new JToolBar();
		toolbar.setFloatable(true);////设置工具栏能否浮动
		panel.add(toolbar,BorderLayout.NORTH);
		iconNew=new ImageIcon("new.gif");
		iconOpen=new ImageIcon("open.gif");
		iconSave=new ImageIcon("save.gif");
		iconCut=new ImageIcon("cut.gif");
		iconCopy=new ImageIcon("copy.gif");
		iconPlaster=new ImageIcon("plaster.gif");
		
		buttonNew=new JButton(iconNew);////////将图片加到按钮上去
		buttonOpen=new JButton(iconOpen);
		buttonSave=new JButton(iconSave);
		buttonCut=new JButton(iconCut);
		buttonCopy=new JButton(iconCopy);
		buttonPaste=new JButton(iconPlaster);
		
		buttonNew.setToolTipText("新建");/////当鼠标移到工具按钮上时提示信息
		buttonOpen.setToolTipText("打开");
		buttonSave.setToolTipText("保存");
		buttonCut.setToolTipText("剪切");
		buttonCopy.setToolTipText("复制");
		buttonPaste.setToolTipText("粘贴");
		
		buttonNew.addActionListener(this);////以下分别设置监听器
		buttonOpen.addActionListener(this);
		buttonSave.addActionListener(this);
		buttonCut.addActionListener(this);
		buttonCopy.addActionListener(this);
		buttonPaste.addActionListener(this);
		
		toolbar.add(buttonNew);
		toolbar.add(buttonOpen);
		toolbar.add(buttonSave);
		toolbar.add(buttonCut);
		toolbar.add(buttonCopy);
		toolbar.add(buttonPaste);
///////////////////////////    文本区    /////////////////////////////////////////
		text.setText("");
		text.setLineWrap(true);//////////设置为自动换行
		panel.add(text,BorderLayout.CENTER);
		panel.add(new JScrollPane(text));////////添加滚动条
		
		filechooser=new JFileChooser("D:\\");//默认路径
		filechooser.addActionListener(this); //监听器
				
		c.validate();
		validate();
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
	}
	
	public void actionPerformed(ActionEvent e)    /////////////监听器事件处理
	{
		JFrame f=null;//////////对话框是一个新的窗体
		File file=null;
		String title="帮助信息";///对话框的标题字符串
		String message="";
	    int type=JOptionPane.PLAIN_MESSAGE;//////显示的消息类型:没有使用图标
		int result;

		if(e.getSource()==itemNew||e.getSource()==buttonNew)//////新建文件
		{
			Windows win=new Windows("记事本");
			win.setLocation(100,100);
			win.setVisible(true);
			
		}	
		else if(e.getSource()==itemOpen||e.getSource()==buttonOpen)//////打开文件
		{
			String s="";			
			if(!s.equalsIgnoreCase(text.getText()))///////当文本区不为空打开文件时给出提示
			{
				message="保存现有文件吗?";
				int b=JOptionPane.showConfirmDialog(this,message,"保存文件",JOptionPane.YES_NO_CANCEL_OPTION);
				if(b==JOptionPane.YES_OPTION)
				{
					filechooser.setDialogTitle("保存文件");////对话框的标题
					result=filechooser.showSaveDialog(this);
					file=null;
					String fileName;
					
					if(result==filechooser.APPROVE_OPTION)///选择确认后返回该值
					{
						file=filechooser.getSelectedFile();//////返回选中的文件
						setTitle(file.getName());////////将文件名称加到标题
					}
					FileOutputStream fileOut=null;
					
					if(file!=null)
					{
						try{
							fileOut=new FileOutputStream(file);
						}catch(FileNotFoundException fe){}
						
						String con=text.getText();
						
						try{
							fileOut.write(con.getBytes());
						}catch(IOException ioe){}
						finally{
							try{
								if(fileOut!=null)
									fileOut.close();
							}catch(IOException ioe2){}
						}
					}
					filechooser.setApproveButtonText("确定");
					filechooser.setDialogTitle("打开文件");
					result=filechooser.showOpenDialog(this);/// 弹出一个 "Open File" 文件选择器对话框。
					text.setText("");
					if(result==JFileChooser.APPROVE_OPTION)///选择确认后返回该值
					{
						file=filechooser.getSelectedFile();//选择文件
						setTitle(file.getName());
					}
					FileInputStream fileIn;
					if(file!=null)  //////打开文件
					{
						try{
							fileIn=new FileInputStream(file);
						   }
						catch(FileNotFoundException fe)////当试图打开指定路径名表示的文件失败时,抛出此异常
						{
							return;
						}
						int read;
						try{
							while((read=fileIn.read())!=-1)
							{
								text.append(String.valueOf((char)read));///将给定文本追加到文档结尾
							}
					
							}catch(IOException ioe){}
						finally{
							try{
								if(fileIn!=null)
								fileIn.close();
								}catch(IOException ioe2){}
						}
					}
				}
				else if(b==JOptionPane.NO_OPTION)
				{
					filechooser.setDialogTitle("打开文件");
					result=filechooser.showOpenDialog(this);/// 弹出一个 "Open File" 文件选择器对话框。
					text.setText("");
					if(result==JFileChooser.APPROVE_OPTION)///选择确认后返回该值
					{
						file=filechooser.getSelectedFile();//选择文件
						setTitle(file.getName());/////将文件名称加到标题
					}
					FileInputStream fileIn;
					if(file!=null)  //////打开文件
					{
						try{
							fileIn=new FileInputStream(file);
						   }
						catch(FileNotFoundException fe)////当试图打开指定路径名表示的文件失败时,抛出此异常
						{
							return;
						}
						int read;
						try{
							while((read=fileIn.read())!=-1)
							{
								text.append(String.valueOf((char)read));///将给定文本追加到文档结尾
							}
					
							}catch(IOException ioe){}
						finally{
							try{
								if(fileIn!=null)
								fileIn.close();
								}catch(IOException ioe2){}
						}
					}
				}	
			}
			else
			{
				filechooser.setDialogTitle("打开文件");
					result=filechooser.showOpenDialog(this);/// 弹出一个 "Open File" 文件选择器对话框。
					text.setText("");
					if(result==JFileChooser.APPROVE_OPTION)///选择确认后返回该值
					{
						file=filechooser.getSelectedFile();//选择文件
						setTitle(file.getName());/////将文件名称加到标题
					}
					FileInputStream fileIn;
					if(file!=null)  //////打开文件
					{
						try{
							fileIn=new FileInputStream(file);
						   }
						catch(FileNotFoundException fe)////当试图打开指定路径名表示的文件失败时,抛出此异常
						{
							return;
						}
						int read;
						try{
							while((read=fileIn.read())!=-1)
							{
								text.append(String.valueOf((char)read));///将给定文本追加到文档结尾
							}
					
							}catch(IOException ioe){}
						finally{
							try{
								if(fileIn!=null)
								fileIn.close();
								}catch(IOException ioe2){}
						}
					}
			}
		}
		else if(e.getSource()==itemSave||e.getSource()==buttonSave)/////保存文件
		{
			filechooser.setDialogTitle("保存文件");////对话框的标题
			result=filechooser.showSaveDialog(this);
			file=null;
			String fileName;
			
			if(result==filechooser.APPROVE_OPTION)///选择确认后返回该值
				file=filechooser.getSelectedFile();//////返回选中的文件
			FileOutputStream fileOut=null;
			
			if(file!=null)
			{
				try{
					fileOut=new FileOutputStream(file);
				}catch(FileNotFoundException fe){}
				
				String con=text.getText();
				
				try{
					fileOut.write(con.getBytes());
				}catch(IOException ioe){}
				finally{
					try{
						if(fileOut!=null)
							fileOut.close();
					}catch(IOException ioe2){}
				}
			}	
		}
			
		if(e.getSource()==itemCut||e.getSource()==buttonCut||e.getSource()==ritemCut)//剪切
			text.cut();
		else if(e.getSource()==itemCopy||e.getSource()==buttonCopy||e.getSource()==ritemCopy)//复制
			text.copy();
		else if(e.getSource()==itemPaste||e.getSource()==ritemPaste||e.getSource()==buttonPaste)//粘贴
			text.paste();
		else if(e.getSource()==itemHelp)//////帮助对话框
		{
			message="此文本编辑器是一个用来创建简单文档的文本编辑器!\n作者:陈江娜";
			JOptionPane.showMessageDialog(f,message,title,type);
		}
	}
}
public class Jshi
{
	public static void main(String args[])
	{
		Windows win=new Windows("文本编辑器");
	}
}

⌨️ 快捷键说明

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