JAVA GUI牛刀小试——记事本

Code:
  1. import java.awt.*;  
  2. import java.awt.event.*;  
  3. import javax.swing.*;  
  4. import java.io.*;  
  5. import java.util.regex.*;;  
  6.   
  7. public class Notepad{  
  8.     static String mystrFile = null;  
  9.       
  10.     public static void main(String[] args)throws Exception{  
  11.           
  12.         final MyFrame mf = new MyFrame("Notepad");  
  13.         //打开文件侦听对象的实现  
  14.         ActionListener al1 = new ActionListener()  
  15.         {  
  16.             public void actionPerformed(ActionEvent e){  
  17.                 FileDialog fd = new FileDialog(mf, "Open", FileDialog.LOAD);  
  18.                 fd.setVisible(true);  
  19.                 String strFile = fd.getDirectory()+fd.getFile();  
  20.                 if(strFile != null){  
  21.                     try{  
  22.                         FileInputStream fis = new FileInputStream(strFile);  
  23.                         byte[] buf = new byte[10*1024];  
  24.                         int len = fis.read(buf);  
  25.                         mf.ta.append(new String(buf,0,len));  
  26.                         strFile = null;  
  27.                         fis.close();  
  28.                         }  
  29.                     catch(Exception ex){  
  30.                         ex.printStackTrace();  
  31.                     }  
  32.                       
  33.                 }  
  34.             }  
  35.         };  
  36.         mf.mi2.addActionListener(al1);//注册打开文件的侦听  
  37.           
  38.         //另存为文件侦听的实现  
  39.         ActionListener al2 = new ActionListener()  
  40.         {  
  41.             public void actionPerformed(ActionEvent e){  
  42.                 FileDialog fd = new FileDialog(mf, "Save", FileDialog.SAVE);  
  43.                 fd.setVisible(true);  
  44.                 String strFile = fd.getDirectory()+ fd.getFile();  
  45.                 if(strFile != null){  
  46.                     try{  
  47.                         FileOutputStream fos = new FileOutputStream(strFile);   
  48.                         fos.write(mf.ta.getText().getBytes(), 0, mf.ta.getText().length());  
  49.                         mystrFile = strFile;  
  50.                         strFile = null;  
  51.                         fos.close();  
  52.                     }  
  53.                     catch(Exception ex){  
  54.                         ex.printStackTrace();  
  55.                     }  
  56.                 }         
  57.             }  
  58.         };    
  59.         mf.mi4.addActionListener(al2);//注册另存为侦听  
  60.           
  61.         //保存侦听的实现  
  62.         ActionListener al3 = new ActionListener()  
  63.         {  
  64.             public void actionPerformed(ActionEvent e){  
  65.                 if(mystrFile == null){            
  66.                     FileDialog fd = new FileDialog(mf, "Save", FileDialog.SAVE);  
  67.                     fd.setVisible(true);  
  68.                     String strFile = fd.getDirectory()+ fd.getFile();  
  69.                     if(strFile != null){  
  70.                         try{  
  71.                             FileOutputStream fos = new FileOutputStream(strFile);   
  72.                             fos.write(mf.ta.getText().getBytes(), 0, mf.ta.getText().length());  
  73.                             fos.close();  
  74.                         }  
  75.                         catch(Exception ex){  
  76.                             ex.printStackTrace();  
  77.                         }  
  78.                     }  
  79.                     mystrFile = strFile;  
  80.                     strFile = null;  
  81.                 }  
  82.                 else  
  83.                 {  
  84.                     try{  
  85.                         FileOutputStream fos = new FileOutputStream(mystrFile);   
  86.                         fos.write(mf.ta.getText().getBytes(), 0, mf.ta.getText().length());  
  87.                         fos.close();  
  88.                     }  
  89.                     catch(Exception ex){  
  90.                         ex.printStackTrace();  
  91.                     }  
  92.                       
  93.                 }  
  94.             }  
  95.         };  
  96.           
  97.         mf.mi3.addActionListener(al3);//注册保存侦听  
  98.           
  99.         mf.setVisible(true);  
  100.     }  
  101. }  
  102.   
  103. /*此类继承自Frame*/  
  104. class MyFrame extends Frame{  
  105.     static String s = null;//当剪切板用  
  106.     MenuBar mb;  //定义窗口的MenuBar类  
  107.     Menu m1, m2, m3, m4, m5;  //定义MenuBar的Menu  
  108.     MenuItem mi1, mi2, mi3, mi4, mi5;//定义Menu的MenuItem  
  109.     MenuItem mi6, mi7;  
  110.     MenuItem mi8, mi9, mi10, mi11, mi12;  
  111.     MenuItem mi13;  
  112.     MenuItem mi14, mi15, mi17;  
  113.     final TextArea ta = new TextArea();//构造文本域  
  114.     MyFrame(String name){  
  115.         super(name);  
  116.         setLocation(350,120);//初始位置  
  117.         setSize(600,610);//初始大小  
  118.         setMyMenuBar();  
  119.         setMenuBar(mb);  
  120.         //叉号退出  
  121.         addWindowListener(new WindowAdapter(){  
  122.             public void windowClosing(WindowEvent e){  
  123.                 System.exit(0);  
  124.             }}  
  125.         );  
  126.         add(ta);//添加文本域       
  127.         }  
  128.     public void setMyMenuBar(){  
  129.         mb = new MenuBar();  
  130.         setMyMenu();  
  131.         mb.add(m1);  
  132.         mb.add(m2);  
  133.         mb.add(m3);  
  134.         mb.add(m4);  
  135.         mb.add(m5);  
  136.     }  
  137.     /*此类定义了Menu,并且调用了setMyMenuItem*/  
  138.     public void setMyMenu(){  
  139.         m1 = new Menu("文件");  
  140.         m2 = new Menu("编辑");  
  141.         m3 = new Menu("格式");  
  142.         m4 = new Menu("查看");  
  143.         m5 = new Menu("帮助");      
  144.         setMyMenuItem();  
  145.         m1.add(mi1);  
  146.         m1.add(mi2);  
  147.         m1.add(mi3);  
  148.         m1.add(mi4);  
  149.         m1.add(mi5);      
  150.         m5.add(mi6);  
  151.         m5.add(mi7);  
  152.         m2.add(mi8);  
  153.         m2.add(mi9);  
  154.         m2.add(mi10);  
  155.         m2.add(mi11);  
  156.         m2.add(mi12);  
  157.         m3.add(mi13);  
  158.         m4.add(mi14);  
  159.         m4.add(mi15);  
  160.         m5.add(mi17);  
  161.           
  162.     }  
  163.     /*此函数中构造了MenuItem,并且实现了部分MenuItem的侦听*/  
  164.     public void setMyMenuItem(){      
  165.         mi1 = new MenuItem("新建");  
  166.         mi1.addActionListener(new ActionListener(){  
  167.             public void actionPerformed(ActionEvent e){  
  168.                 ta.setText("");  
  169.             }  
  170.         });  
  171.         mi2 = new MenuItem("打开");  
  172.     /*  ActionListener al = new ActionListener(){ 
  173.             public void actionPerformed(ActionEvent e){ 
  174.                 FileDialog fd = new FileDialog(this, "打开", FileDialog.LOAD); 
  175.             } 
  176.         };*/  
  177.           
  178.         /*一下连个MenuItem的侦听器实现在Notepad类中,因为内部类只能访问final和static变量,在Notepad中定义了final mf*/  
  179.         mi3 = new MenuItem("保存");  
  180.         mi4 = new MenuItem("另存为");  
  181.           
  182.         mi5 = new MenuItem("退出");/*定义退出按钮*/  
  183.         /*内部类实现“退出”MenuItem的侦听器并注册*/  
  184.         mi5.addActionListener(new ActionListener(){  
  185.             public void actionPerformed(ActionEvent e) {  
  186.                 System.exit(1);  
  187.             }             
  188.         });  
  189.         mi6 = new MenuItem("查看帮助");  
  190.         mi6.addActionListener(new ActionListener(){  
  191.             public void actionPerformed(ActionEvent e) {  
  192.                 JOptionPane.showMessageDialog(null"Fighting2011!!!",  
  193.                         "Notepad", JOptionPane.INFORMATION_MESSAGE);  
  194.   
  195.   
  196.             }     
  197.         });  
  198.         mi7 = new MenuItem("关于记事本");  
  199.         /*实现mi7  MenuItem的侦听器并注册*/  
  200.         mi7.addActionListener(new ActionListener(){  
  201.             public void actionPerformed(ActionEvent e) {  
  202.                 JOptionPane.showMessageDialog(null"大成的写字板/nhttp://student.csdn.net/?297196",  
  203.                         "Notepad", JOptionPane.INFORMATION_MESSAGE);  
  204.             }     
  205.         });  
  206.         mi8 = new MenuItem("剪切");  
  207.         mi8.addActionListener(new ActionListener(){  
  208.             public void actionPerformed(ActionEvent e){  
  209.                 s = ta.getSelectedText();  
  210.                 int start = ta.getSelectionStart();  
  211.                 int end = ta.getSelectionEnd();  
  212.                 ta.replaceText("", start, end);  
  213.             }  
  214.         });  
  215.           
  216.         mi9 = new MenuItem("复制");//这里我用了静态变量,最好改为剪贴板O__O"…  
  217.         mi9.addActionListener(new ActionListener(){  
  218.             public void actionPerformed(ActionEvent e){  
  219.                 s = ta.getSelectedText();  
  220.             }  
  221.         });  
  222.         mi10 = new MenuItem("粘贴");//此处应该改为剪贴板O__O"…  
  223.         /*实现粘贴按钮侦听器的接口*/  
  224.         mi10.addActionListener(new ActionListener(){  
  225.             public void actionPerformed(ActionEvent e){  
  226.                 ta.append(s);  
  227.             }  
  228.         });  
  229.         mi11 = new MenuItem("删除");  
  230.         mi11.addActionListener(new ActionListener(){  
  231.             public void actionPerformed(ActionEvent e){  
  232.                 int start = ta.getSelectionStart();  
  233.                 int end = ta.getSelectionEnd();  
  234.                 ta.replaceText("", start, end);  
  235.             }  
  236.         });  
  237.           
  238.         mi12 = new MenuItem("时间/日期");//调用时间函数  
  239.         /*实现时间按钮按钮侦听器的接口*/  
  240.         mi12.addActionListener(new ActionListener(){  
  241.             public void actionPerformed(ActionEvent e){  
  242.                   java.util.Date utildate=new java.util.Date();  
  243.                   ta.append(""+utildate);  
  244.             }  
  245.         });  
  246.         mi13 = new MenuItem("字体");  
  247.         mi14 = new MenuItem("当前字数");  
  248.         mi15 = new MenuItem("当前行数");  
  249.       
  250.         mi15.addActionListener(new ActionListener(){  
  251.             public void actionPerformed(ActionEvent e){  
  252.                 String   input = ta.getText();  
  253.                 String[]   regStr   = input.split( "/n") ;   
  254.   
  255.                 int   i   =  0;  
  256.                 for(String s : regStr){i++;}  
  257.                   
  258.                 JOptionPane.showMessageDialog(null"当前行数:"+ i,  
  259.                         "", JOptionPane.INFORMATION_MESSAGE);  
  260.             }   
  261.         });  
  262.   
  263.         mi17 = new MenuItem("作者的主页");  
  264.         mi17.addActionListener(new ActionListener(){  
  265.             public void actionPerformed(ActionEvent e) {  
  266.                  String command = "explorer http://student.csdn.net/?297196";    
  267.                   try {    
  268.                 //这里是打开一个指定的网址    
  269.                    Process process  = Runtime.getRuntime().exec(command);    
  270.                   } catch (IOException ex) {    
  271.                    // TODO 自动生成 catch 块    
  272.                    ex.printStackTrace();    
  273.                   }    
  274.             }     
  275.         });  
  276.           
  277.     }     
  278. }  

 

 

你可能感兴趣的:(java,String,command,null,byte,menu)