Java简单记事本

导读:本篇文章讲解 Java简单记事本,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

记录

一次课设,屎一样的代码
功能: 新建 打开 保存 退出 全选 复制 粘贴 查找

源码

import java.io.*;
import javax.swing.*;
import javax.swing.border.Border;

import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Notepad extends JFrame implements ActionListener {
	private static final long serialVersionUID = 1L;
	
	JButton jbtn=new JButton("查找");
	JFrame newf=new JFrame("查找");
	JMenuBar menuBar = new JMenuBar();
	  JMenu file = new JMenu("文件"),   // 绘制文件按钮
	        edit = new JMenu("编辑");   //绘制编辑按钮
	        
	  JMenuItem[] menuItem ={  //设置文件按钮下的按钮选项
	   new JMenuItem("新建"),//绘制新建按钮
	   new JMenuItem("打开"),//绘制打开按钮
	   new JMenuItem("保存"),//绘制保存按钮
	   new JMenuItem("退出"),//绘制退出按钮
	   new JMenuItem("全选"),//绘制全选按钮
	   new JMenuItem("复制"),//绘制复制按钮
	   new JMenuItem("剪切"),//绘制剪切按钮
	   new JMenuItem("粘贴"),//绘制粘贴按钮
	   new JMenuItem("查找"),//绘制查找按钮
	   new JMenuItem("查找"),//绘制查找按钮
	   };

	  JTextArea textArea = new JTextArea();
	  //Panel myPanel=new Panel();
	  JTextArea textArea1 = new JTextArea();
	  String fileName = "NoName";     //设置默认文件名
	  Toolkit toolKit = Toolkit.getDefaultToolkit(); //设置默认工具箱
	  Clipboard clipboard = toolKit.getSystemClipboard();//调用文件工具箱下的系统剪贴板方法
	  
	  private JFileChooser openFileDialog = new JFileChooser();//设置私有的JFileChooser 下的打开文件对话方法
	  private JFileChooser saveFileDialog = new JFileChooser();//设置私有的JFileChooser 下的保存文件对话方法
	
	  public Notepad() {
		  setTitle("记事本"); //设置程序标题名
		  setFont(new Font("Times New Roman",Font.PLAIN,15)); //设置字体及字体大小
		  setBackground(Color.white);//设置程序背景色为白色
		  setSize(500,500);//设置程序运行的窗口大小
		  
		  add(new JScrollPane(textArea));
		  
		  setJMenuBar(menuBar); //设置菜单栏
		  menuBar.add(file);
		  menuBar.add(edit);
		  
		  file.add(menuItem[0]); //file下添加4个选项
		  file.add(menuItem[1]);
		  file.add(menuItem[2]);
		  file.add(menuItem[3]);
		  
		  edit.add(menuItem[4]);//edit下添加5个选项
		  edit.add(menuItem[5]);
		  edit.add(menuItem[6]);
		  edit.add(menuItem[7]);
		  edit.add(menuItem[8]);
		  
		  
		  
		  //this.getContentPane().add(textArea);//添加文本输入区域
		  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出按钮
		  for(int i=0;i<menuItem.length;i++)   // 循环执行,取决于列表长度
		     {
		      menuItem[i].addActionListener(this);//设置监听
		      }
	  }
	  
	  public void openFile(String fileName){ //设置打开方法
		  byte buffer[]=new byte[2056];//建立存放数据的字节组
		  int bytes;
		  String str;
		  try{
			  /*File file = new File(fileName);//读取打开的文件名
			  FileReader readIn = new FileReader(file);
			  int size = (int)file.length();//得到打开文件的长度
			  int charsRead = 0;
			  char[] content = new char[size];
			  while(readIn.ready())
			  charsRead += readIn.read(content,charsRead,size-charsRead);
			  readIn.close();
			  textArea.setText(new String(content,0,charsRead));*/
			  File file = new File(fileName);//读取打开的文件名
			  FileInputStream fileInput=new FileInputStream(file);
			  bytes = fileInput.read(buffer);
			  str= new String(buffer,0,bytes);//将字节数组转化为字符串
			  textArea.setText(str);
		  }
		  catch(Exception e){//异常处理
		     System.out.println("错误打开文件!");//输出异常信息 错误打开文件
		     }
		  
		  
	  }
	  
	  public void writeFile(String fileName){ //异常处理 
		   try{
		    File file = new File(fileName);
		    FileWriter write = new FileWriter(file);
		    write.write(textArea.getText());   
		    write.close();
		    }catch(Exception e){//关闭时的异常处理
		     System.out.println("Error closing file!");//输出异常处理信息 
		     }
		   }
	  
	  public void actionPerformed(ActionEvent e) {
			
			Object eventSource = e.getSource();
		    if(eventSource == menuItem[0])//新建文件事件
		  {
		   textArea.setText("");  //设置文本框内值为空
		   }
		   else if(eventSource == menuItem[1])//打开文件
		  {
		   openFileDialog.showOpenDialog(this);   //打开文件对话框
		   fileName = openFileDialog.getSelectedFile().getPath();//得到文件名
		   if(fileName != null)  //如果打开的文件不为空
		   {
		    openFile(fileName); //打开文件
		    }
		  }
		    else if(eventSource ==menuItem[2]) //保存文件事件
		  {
		   saveFileDialog.showSaveDialog(this); //打开保存文件对话框
		   fileName = saveFileDialog.getSelectedFile().getPath();//得到文件名(本地路径)
		   if(fileName !=null)  //如果文件名不为空
		   {
		    writeFile(fileName); //写入文件
		    }
		   }
		    else if(eventSource==menuItem[3])//设置退出事件
		  {
		   System.exit(0);//程序结束 退出
		   }
		    else if(eventSource == menuItem[4])  //设置全选事件
		  {
		   textArea.selectAll();  //文本区域全选
		   }
		    else if(eventSource == menuItem[5])  //设置复制事件
		     {
		      String text = textArea.getSelectedText();  //将得到的选择文本内容存入text中
		      StringSelection selection= new StringSelection(text);
		      clipboard.setContents(selection,null);//将得到的内容放入到剪切板中
		      }
		     else if(eventSource == menuItem[6]) //设置剪切事件
		  {
		   String text = textArea.getSelectedText(); //将得到的选择文本内容存入text中
		   StringSelection selection = new StringSelection(text);
		   clipboard.setContents(selection,null);//将得到的内容放入到剪切板中
		   textArea.replaceRange("",textArea.getSelectionStart(),//将原有的内容进行替换 替换为空
		       textArea.getSelectionEnd()); //得到文本区域的值
		  
		  }
		     else if(eventSource == menuItem[7])//设置删除事件
		  {
		      Transferable contents = clipboard.getContents(this);//设置剪切板中的内容存入可传输内容中
		      if(contents==null)  //如果内容为空
		      return;    //结束
		      String text;
		      text=""; //设置文本区域为空
		      try{  
		       text = (String)contents.getTransferData(DataFlavor.stringFlavor);
		          // 检查内容是否是文本类型
		       }
		      catch(UnsupportedFlavorException ex){ }
			    catch(IOException ex){ }
		      textArea.replaceRange(text,textArea.getSelectionStart(),textArea.getSelectionEnd());  
		      }
		     else if(eventSource == menuItem[8])//设置查找事件
			  {
		    	 
		    	 newf.setSize(300,200);
		    	 newf.setVisible(true);
		    	 setLayout(new BorderLayout());
		    	 newf.add(textArea1);
		    	 menuItem[9].setBounds(120,90,40,30);
		    	 textArea1.add(menuItem[9]);
		    	 validate();
		    	 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		    	 
		    	 
			  }
		     else if(eventSource == menuItem[9])//设置查找事件
		     {
		    	 int n;
		    	 int n1;
		    	 String s=textArea.getText();
		    	 String m=textArea1.getText();
		    	 n=s.indexOf(m);
		    	 n1=m.length();
		    	 if(n>=0) {
		    		 newf.dispose();
		    		 textArea.setCaretPosition(n+n1);
		    	 }
		    	 else if(n<0) {
		    		 JOptionPane.showMessageDialog(null, "无");
		    	 }
		     }
	  }
	
public static void main(String[] args) {
		
		Notepad notepad = new Notepad();
		notepad.setVisible(true);

			}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105000.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!