用Java编写的一个小记事本

您所在的位置:网站首页 用java编写一个简单的记事本程序 用Java编写的一个小记事本

用Java编写的一个小记事本

2024-07-10 18:37| 来源: 网络整理| 查看: 265

   这是在学校做的一个小记事本,在网上看过一些记事本的代码,大多是一些比较有经验的前辈所编写的,算法比较精妙,精简。对于Java初学者来说,我有一个比较简单的思想。用Java编写的一个小记事本

   要编写出一个记事本,至少需要拥有两方面的知识:1.图形用户界面(GUI)程序设计 2.文件的输入和输出

    用Java编写的一个小记事本

  我的基本思想就是;"先把记事本的框架先做好,再逐步添加监听。"

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.io.*;//以上是导入各种所用到的包

public class  Mynotebook {   public static  void  main(String args[]){ MyFrame frame=new   MyFrame();//这个主函数是框架 frame.setTitle("我的记事本"); frame.setSize(300,350); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

} }

class MyFrame extends JFrame {  JTextArea jt1=new JTextArea();//设置文本域对象        File f;         String result="";         boolean  flag=true;         String value;           JButton jbt=new JButton("替换为");//按钮  JButton jba=new JButton("全部替换");  JTextField jtf=new JTextField(15);  JTextField jt=new JTextField(15);  int start=0;        JFrame frame=new  JFrame();

     //以上是添加  JPanel textPanel=new JPanel();//面板

JMenu jmu1=new JMenu("文件");//菜单主项  JMenuItem jmi1=new JMenuItem("新建");//以下是在菜单项里加入目录    JMenuItem jmi2=new JMenuItem("打开");    JMenuItem jmi3=new JMenuItem("保存");    JMenuItem jmi4=new JMenuItem("另存为");   JMenuItem jmi5=new JMenuItem("退出");     JMenu  jmu2=new JMenu("编辑");    JMenuItem jmi6=new JMenuItem("复制");    JMenuItem jmi7=new JMenuItem("粘贴");    JMenuItem jmi8=new JMenuItem("查找替换");       JMenu  jmu3=new JMenu("帮助");  final  JMenuItem jmi9=new JMenuItem("关于编辑器");  JMenuItem jmi10=new JMenuItem("帮助主题");      public MyFrame(){      textPanel.setLayout(new BorderLayout());//设置布局    jmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));//设置快捷键    jmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));    jmi5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,ActionEvent.CTRL_MASK));    jmi6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,ActionEvent.CTRL_MASK));    jmi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,ActionEvent.CTRL_MASK));     JMenuBar jmb=new  JMenuBar();//菜单条    setJMenuBar(jmb);    jmb.add(jmu1);//将设置的对象,添加到对应的地方才能实现功能。添加就如“大盒子里面套小盒子...”    jmb.add(jmu2);    jmb.add(jmu3);    jmu1.add(jmi1);    jmu1.add(jmi2);    jmu1.add(jmi3);    jmu1.add(jmi4);    jmu1.add(jmi5);    jmu2.add(jmi6);    jmu2.add(jmi7);    jmu2.add(jmi8);    jmu3.add(jmi9);    jmu3.add(jmi10);  Container  contentPane=getContentPane();//内容窗口   contentPane.add(textPanel,BorderLayout.CENTER);   textPanel.add(jt1); 

 

 

jmi1.addActionListener (new ActionListener(){  //第一个监听,“新建”      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi1);    jt1.setText(null);        }      } );   jmi5.addActionListener (new ActionListener(){ //“退出”(我是由简单到难,所以监听顺序不一样)      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi5);    System.exit(0);        }      } );   jmi9.addActionListener (new ActionListener(){ //监听,“关于编辑器”,设置的一个标签      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi9);    JFrame jd=new JFrame("关于编辑器");    jd.setSize(100,100);    JLabel a=new JLabel("WINGS-旗下开发产品-"+"周忠华制作");    jd.add(a,BorderLayout.CENTER);    jd.setLocation(100,200);    jd.setSize(300,300);    jd.setVisible(true);    jd.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);    

       }      } );   jmi10.addActionListener (new ActionListener(){//监听,“帮助主题”,设置一个文本域,再不可编辑      public void actionPerformed(ActionEvent e)   {   textPanel.setLayout(new BorderLayout());     JFrame frame=new  JFrame("帮助主题");        Container  contentPane=getContentPane();//内容窗口    contentPane.add(textPanel,BorderLayout.CENTER);    JPanel textPanel=new JPanel();//面板                 String help="WINGS-旗下帮助:\n"   +"新建:重新开始一个文本框\n"   +"打开:打开一个指定文件\n"   +"保存:保存当前你所修改\n"   +"另存为:保存在一个指定文件中\n"   +"退出:退出记事本\n"   +"复制:复制你想要的信息\n"   +"粘贴:把你所剪贴或复制的信息拷贝下来\n"   +"查找替换:找到你想要找到的信息并替换所有相同的信息\n"   +"关于记事本:产品出处\n"   +"帮助主题:当前所打开的文本框";   JTextArea jt2=new JTextArea();   jt2=new JTextArea(30,20);    jt2.setEditable(false);//不可编辑    textPanel.add(jt2);    jt2.setText(help);    frame.add(textPanel,BorderLayout.CENTER);   frame.setSize(350,250);   frame.setVisible(true);   frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

 

       }      } );   jmi6.addActionListener (new ActionListener(){ //监听,“复制”,一个函数搞定      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi6);        jt1.copy();        }      } );   jmi7.addActionListener (new ActionListener(){ //监听,“粘贴”      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi7);        String b;    b=jt1.getText();    jt1.paste();        }      } ); jmi2.addActionListener (new ActionListener(){ //监听,“打开”     public void actionPerformed(ActionEvent e)   {      if(e.getSource()==jmi2);           MyFrame frame=new  MyFrame();                               JFileChooser jfc=new JFileChooser();                    jfc.setDialogType(JFileChooser.OPEN_DIALOG);                    jfc.showOpenDialog(null);                     f=jfc.getSelectedFile();                     frame.setTitle(f.getName());                      flag=false;                     jt1.setText(read());                             }

  });   jmi3.addActionListener (new ActionListener(){ //监听,“保存”      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi3);       JFileChooser jfc=new JFileChooser();       if(flag){         jfc.showOpenDialog(null);         f=jfc.getSelectedFile();         flag=false;         write();       }else{      write();      }            }      } );      jmi4.addActionListener (new ActionListener(){//监听,“另存为”      public void actionPerformed(ActionEvent e)   {    if(e.getSource()==jmi4);       JFileChooser jfc=new JFileChooser();         jfc.showOpenDialog(null);         f=jfc.getSelectedFile();         flag=false;         write();            }      } ); jmi8.addActionListener(new ActionListener(){ //查找替换    public void actionPerformed(ActionEvent e) {     if(e.getSource()==jmi8){     JFrame thjf=new JFrame("替换");     value=jt1.getText();     GridLayout gl=new GridLayout(3,2);     JLabel jl1=new JLabel("查找内容:");       JLabel jl2=new JLabel("替换为:");     thjf.setLayout(gl);     thjf.add(jl1);     thjf.add(jtf);     thjf.add(jl2);     thjf.add(jt);     thjf.add(jbt);     thjf.add(jba);          thjf.setLocation(300,300);     thjf.pack();     thjf.setVisible(true);     thjf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);     }        }});

 

 

  jbt.addActionListener(new ActionListener(){ //替换按钮的监听    public void actionPerformed(ActionEvent e) {     if (e.getSource()==jbt){       String value=jt1.getText();       String temp=jtf.getText();      int s=value.indexOf(temp,start);      if(value.indexOf(temp,start)!=-1){       jt1.setSelectionStart(s);       jt1.setSelectionEnd(s+temp.length());       jt1.setSelectedTextColor(Color.GREEN);       start=s+1;       jt1.replaceSelection(jt.getText());      }else {       JOptionPane.showMessageDialog(frame, "替换完毕!", "提示", 0);       frame.dispose();      }      }        }});   jba.addActionListener(new ActionListener(){ //全部替换按钮的监听    public void actionPerformed(ActionEvent e) {     if (e.getSource()==jba){      String temp=jt1.getText();      temp=temp.replaceAll(jtf.getText(), jt.getText());      jt1.setText(temp);      JOptionPane.showMessageDialog(frame, "替换完毕!", "提示", 0);      frame.dispose();      }        }});

  

   } public  String read(){ //读方法            String temp="";             try{              FileInputStream  fis=new FileInputStream(f.getAbsolutePath());              byte[]b=new byte[1024];              while(true){              int num=fis.read(b);               if(num==-1)break;             temp=temp+new String(b,0,num);              } fis.close();

} catch(Exception e1) {

e1.printStackTrace(); }   return temp; } public void write(){  //写方法  try{  FileOutputStream fos=new FileOutputStream(f);  fos.write(jt1.getText().getBytes());  fos.close();    }catch(Exception e){    e.printStackTrace();  }

} }

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3