文本编辑器 GUI IO编程

来源:互联网 发布:淘宝童装店名大全 编辑:程序博客网 时间:2024/05/27 21:12

最近java课程设计写一个文本编辑器,恰巧前几天刚刚看了一下io编程,所以自己动手写了一个,不完美,而且自我感觉代码有点乱,也希望大家指正。

1、具有菜单功能,包括如下菜单:

文件:新建、打开、保存、退出

编辑:复制、粘贴、查找、替换

帮助:关于

2、刚运行时默认是新建状态,标题栏可以显示为“新建文本文件”,可以直接在文本区(JTextArea)中输入文字内容,单击保存菜单时要做判断是否保存过,如果还没有保存过则提示输入文件名,然后保存为用户输入的文件名,同时窗口的标题栏显示为该文件名;如果不是第一次保存,即已经保存过一次,则直接保存到原来的文件名,标题栏仍然显示为原来的文件名。

3、单击打开菜单时,弹出打开文件对话框,要用户选择一个文本文件,然后把文件内容读取并显示到文本编辑区(用JTextArea实现),单击保存时,不用再提示输入文件名,直接保存到原来的打开时的文件名,文件名要显示到标题栏(同时文件名应该保存到属性变量中)

 

4、单击保存菜单时,要判断是否是第一次新建或默认运行时的状态,如果是,则提示输入文件名,然后保存到文件中去;否则,直接保存到原来的文件名里即可。

5、单击退出菜单,直接退出系统。

6、单击复制菜单时,将选中的文本复制到粘贴板。

7、单击粘贴菜单时,将粘贴板中的内容复制到光标所在的文本位置。

8、单击查找菜单时,提示输入要查找的内容,并把查找到的内容选中。

9、单击替换菜单时,提示输入要替换成的内容,并进行替换(只替换第一个找到的结果即可,其他的可以多次替换来完成)

10、单击关于菜单时,显示一个作者和版权信息即可(作者是你本人)。

提示。



代码如下:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.awt.BorderLayout;  
  2. import java.awt.event.ActionListener;  
  3. import java.awt.event.ActionEvent;  
  4. import java.awt.event.ActionListener;  
  5. import java.io.*;  
  6.   
  7. import javax.swing.*;  
  8. public class Test extends JFrame implements ActionListener{  
  9.       
  10.     static String filepath;  
  11.     String temp;  
  12.     static boolean flag = true;  
  13.       
  14.     JPanel jp = null;  
  15.     JScrollPane jsp = null;  
  16.     static JTextArea jta = null;  
  17.     JMenuBar jmb =null;  
  18.     JMenu jm1 = null;  
  19.     JMenu jm2 = null;  
  20.     JMenu jm3 = null;  
  21.       
  22.     JMenuItem jm1_jmi1 = null;  
  23.     JMenuItem jm1_jmi2 = null;  
  24.     JMenuItem jm1_jmi3 = null;  
  25.     JMenuItem jm1_jmi4 = null;  
  26.       
  27.     JMenuItem jm2_jmi1 = null;  
  28.     JMenuItem jm2_jmi2 = null;  
  29.     JMenuItem jm2_jmi3 = null;  
  30.     JMenuItem jm2_jmi4 = null;  
  31.       
  32.     JMenuItem jm3_jmi1 = null;  
  33.   
  34.     public Test(){  
  35.   
  36.         jta = new JTextArea();    
  37.         jsp = new JScrollPane(jta);  
  38.         jp = new JPanel();  
  39.       
  40.         jmb = new JMenuBar();  
  41.         jm1 = new JMenu("文件");  
  42.         jm2 = new JMenu("编辑");  
  43.         jm3 = new JMenu("帮助");  
  44.           
  45.         jm1_jmi1 = new JMenuItem("新建");  
  46.         jm1_jmi1.addActionListener(this);  
  47.         jm1_jmi1.setActionCommand("new");  
  48.           
  49.         jm1_jmi2 = new JMenuItem("打开");  
  50.         jm1_jmi2.addActionListener(this);  
  51.         jm1_jmi2.setActionCommand("open");  
  52.           
  53.           
  54.         jm1_jmi3 = new JMenuItem("保存");  
  55.         jm1_jmi3.addActionListener(this);  
  56.         jm1_jmi3.setActionCommand("save");  
  57.           
  58.         jm1_jmi4 = new JMenuItem("退出");  
  59.         jm1_jmi4.addActionListener(this);  
  60.         jm1_jmi4.setActionCommand("exit");  
  61.           
  62.           
  63.         jm2_jmi1 = new JMenuItem("复制");  
  64.         jm2_jmi1.addActionListener(this);  
  65.         jm2_jmi1.setActionCommand("copy");  
  66.           
  67.         jm2_jmi2 = new JMenuItem("粘贴");  
  68.         jm2_jmi2.addActionListener(this);  
  69.         jm2_jmi2.setActionCommand("paste");  
  70.           
  71.         jm2_jmi3 = new JMenuItem("查找");  
  72.         jm2_jmi3.addActionListener(this);  
  73.         jm2_jmi3.setActionCommand("find");  
  74.           
  75.         jm2_jmi4 = new JMenuItem("替换");  
  76.         jm2_jmi4.addActionListener(this);  
  77.         jm2_jmi4.setActionCommand("replace");  
  78.           
  79.         jm3_jmi1 = new JMenuItem("关于");  
  80.         jm3_jmi1.addActionListener(this);  
  81.         jm3_jmi1.setActionCommand("about");  
  82.           
  83.         jmb.add(jm1);  
  84.         jm1.add(jm1_jmi1);  
  85.         jm1.addSeparator();  
  86.         jm1.add(jm1_jmi2);  
  87.         jm1.addSeparator();  
  88.         jm1.add(jm1_jmi3);  
  89.         jm1.addSeparator();  
  90.         jm1.add(jm1_jmi4);  
  91.           
  92.         jmb.add(jm2);  
  93.         jm2.add(jm2_jmi1);  
  94.         jm2.addSeparator();  
  95.         jm2.add(jm2_jmi2);  
  96.         jm2.addSeparator();  
  97.         jm2.add(jm2_jmi3);  
  98.         jm2.addSeparator();  
  99.         jm2.add(jm2_jmi4);  
  100.           
  101.         jmb.add(jm3);  
  102.         jm3.add(jm3_jmi1);  
  103.           
  104.         this.setJMenuBar(jmb);  
  105.         this.add(jsp);    
  106.         this.setTitle("新建文本文档");  
  107.         this.setSize(800,600);  
  108.         this.setVisible(true);  
  109.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  110.           
  111.     }  
  112.       
  113.       
  114.       
  115.       
  116.     public void actionPerformed(ActionEvent e){  
  117.         //打开按钮监听器  
  118.         if(e.getActionCommand().equals("open")){  
  119.             Open open1 = new Open();  
  120.             open1.open();  
  121.               
  122.         }  
  123.           
  124.         //保存按钮监听器  
  125.         //二次保存功能未实现  
  126.         if(e.getActionCommand().equals("save")){      
  127.             Save save1 = new Save();  
  128.             save1.save();  
  129.             //System.exit(0);  
  130.               
  131.         }  
  132.           
  133.         //退出功能  
  134.         if(e.getActionCommand().equals("exit")){  
  135.             System.exit(0);  
  136.         }  
  137.           
  138.         //复制功能  
  139.         if(e.getActionCommand().equals("copy")){  
  140.             temp = jta.getSelectedText();  
  141.                           
  142.         }  
  143.           
  144.         //粘贴功能  
  145.         if(e.getActionCommand().equals("paste")){  
  146.             StringBuffer tmp = new StringBuffer ( jta.getText());  
  147.             int start = jta.getSelectionStart(); //得到要粘贴的位置  
  148.             tmp.insert(start , temp);//查入要粘贴的内容  
  149.             jta.setText(tmp.toString());//用新文本设置原文本  
  150.         }  
  151.           
  152.         //查找功能  
  153.         if(e.getActionCommand().equals("find")){  
  154.             Find find = new Find();  
  155.             find.search();  
  156.               
  157.         }  
  158.           
  159.         //替换功能  
  160.         if(e.getActionCommand().equals("replace")){  
  161.             Replace replace = new Replace();  
  162.         }  
  163.           
  164.         //帮助选项关于功能  
  165.         if(e.getActionCommand().equals("about")){  
  166.             JOptionPane jop = new JOptionPane();  
  167.             jop.showMessageDialog(null"杰哥版权,随便侵犯.""给哥看准了",JOptionPane.PLAIN_MESSAGE);  
  168.               
  169.         }  
  170.   
  171.           
  172.     }  
  173.       
  174.       
  175.     public static void main(String[] args) {  
  176.         // TODO Auto-generated method stub  
  177.         Test test = new Test();  
  178.     }  
  179.   
  180. }  
几个功能类代码如下:

替换功能:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.awt.BorderLayout;  
  2. import java.awt.event.ActionEvent;  
  3. import java.awt.event.ActionListener;  
  4.   
  5. import javax.swing.*;  
  6.   
  7. public class Replace extends JFrame implements ActionListener{  
  8.   
  9.     JPanel jp1 = null;  
  10.     JPanel jp2 = null;  
  11.     JPanel jp3 = null;  
  12.     JTextField jtf1 = null;  
  13.     JTextField jtf2 = null;  
  14.     JLabel jl1 = null;  
  15.     JLabel jl2 = null;  
  16.     JButton jb1 = null;  
  17.     JButton jb2 = null;  
  18.     String s1;  
  19.     String s2;  
  20.       
  21.     public Replace(){  
  22.         jp1 = new JPanel();  
  23.         jp2 = new JPanel();  
  24.         jp3 = new JPanel();  
  25.           
  26.         jtf1 = new JTextField(10);  
  27.         jtf2 = new JTextField(10);  
  28.         jl1 = new JLabel("查找内容:");  
  29.         jl2 = new JLabel("替换为:    ");  
  30.           
  31.         jb1 = new JButton("替换");  
  32.         jb1.addActionListener(this);  
  33.         jb1.setActionCommand("replace");  
  34.           
  35.         jb2 = new JButton("取消");  
  36.         jb2.addActionListener(this);  
  37.         jb2.setActionCommand("exit");  
  38.           
  39.         jp1.add(jl1);  
  40.         jp1.add(jtf1);  
  41.           
  42.         //System.out.println(s1);  
  43.           
  44.         jp2.add(jl2);  
  45.         jp2.add(jtf2);  
  46.         //s2 = jtf2.getText();  
  47.           
  48.         jp3.add(jb1);  
  49.         jp3.add(jb2);  
  50.           
  51.         this.add(jp1,BorderLayout.NORTH);  
  52.         this.add(jp2);  
  53.         this.add(jp3,BorderLayout.SOUTH);  
  54.         this.setTitle("查找与替换");  
  55.         this.setVisible(true);  
  56.         this.setSize(300,150);  
  57.           
  58.     }  
  59.       
  60.   
  61. //  public static void main(String []args){  
  62. //      new Replace();  
  63. //  }  
  64.   
  65.   
  66.     public void actionPerformed(ActionEvent e) {  
  67.         if(e.getActionCommand().equals("replace")){  
  68.             s1 = jtf1.getText();  
  69.             s2 = jtf2.getText();  
  70.             int first = Test.jta.getText().indexOf(s1);  
  71.             if(first!=-1 && s1.length()!=0){  
  72.                 Test.jta.replaceRange(s2, first, first+s1.length());  
  73.                 this.dispose();  
  74.             }  
  75.             else{  
  76.                 JOptionPane jop = new JOptionPane();  
  77.                 jop.showMessageDialog(null"未检索到输入字符""提示",JOptionPane.PLAIN_MESSAGE);                  
  78.             }  
  79.         }  
  80.         if(e.getActionCommand().equals("exit")){  
  81.             this.dispose();  
  82.         }  
  83.           
  84.     }  
  85.   
  86. }  


保存功能:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.io.BufferedWriter;  
  2. import java.io.FileNotFoundException;  
  3. import java.io.FileWriter;  
  4. import java.io.IOException;  
  5.   
  6. import javax.swing.JFileChooser;  
  7.   
  8. public class Save{  
  9.     public void save(){   
  10.             JFileChooser jfc = new JFileChooser();  
  11.             if(Test.flag==true){  
  12.                 jfc.setDialogTitle("另存为");  
  13.                 jfc.showSaveDialog(null);  
  14.                 jfc.setVisible(true);  
  15.                 Test.filepath = jfc.getSelectedFile().getAbsolutePath();  
  16.                 Test.flag = false;            
  17.             }  
  18.   
  19.                           
  20.             FileWriter fw =null;  
  21.             BufferedWriter bw = null;  
  22.           
  23.             try {  
  24.                 fw = new FileWriter(Test.filepath);  
  25.                 bw = new BufferedWriter(fw);  
  26.               
  27.                 bw.write(Test.jta.getText());  
  28.             } catch (FileNotFoundException e1) {  
  29.                 e1.printStackTrace();  
  30.             } catch (IOException e2) {  
  31.                 e2.printStackTrace();  
  32.             }finally{  
  33.                 try {  
  34.                     bw.close();  
  35.                     fw.close();  
  36.                 } catch (IOException e1) {  
  37.                     e1.printStackTrace();  
  38.                 }  
  39.             }  
  40.   
  41.     }  
  42. }  


打开功能:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import java.io.BufferedReader;  
  2. import java.io.FileNotFoundException;  
  3. import java.io.FileReader;  
  4. import java.io.IOException;  
  5.   
  6. import javax.swing.JFileChooser;  
  7.   
  8. class Open{  
  9.     public void open(){  
  10.         JFileChooser jfc =new JFileChooser();  
  11.         jfc.setDialogTitle("打开文件");  
  12.         jfc.showOpenDialog(null);  
  13.         jfc.setVisible(true);  
  14.           
  15.         //获取路径  
  16.         String filepath = jfc.getSelectedFile().getAbsolutePath();  
  17.         FileReader fr = null;  
  18.         BufferedReader br = null;  
  19.           
  20.         try {  
  21.             fr = new FileReader(filepath);  
  22.             br = new BufferedReader(fr);  
  23.               
  24.             String s = "";  
  25.             String allText = "";  
  26.             while((s=br.readLine())!=null){  
  27.                 allText+=s+"\r\n";  
  28.             }  
  29.             Test.jta.setText(allText);  
  30.         } catch (FileNotFoundException e1) {  
  31.         } catch (IOException e2) {  
  32.             e2.printStackTrace();  
  33.         }finally{//关闭通道  
  34.             try {  
  35.                 br.close();  
  36.                 fr.close();  
  37.             } catch (IOException e1) {  
  38.                 e1.printStackTrace();  
  39.             }  
  40.         }  
  41.     }  
  42. }  


查找功能:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. import javax.swing.JOptionPane;  
  2.   
  3. public class Find {  
  4.     public void search(){  
  5.         JOptionPane jop = new JOptionPane();  
  6.         String tempString = (String) jop.showInputDialog(null,"请输入要查找的关键字:\n","查找",JOptionPane.PLAIN_MESSAGE,null,null"在这输入");  
  7.         int first = Test.jta.getText().indexOf(tempString);  
  8.         if(first!=-1)  
  9.             Test.jta.select(first, first+tempString.length());  
  10.         else if(tempString.length()==0)  
  11.             jop.showMessageDialog(null"您还没有输入要查找的字符""提示",JOptionPane.PLAIN_MESSAGE);  
  12.         else{  
  13.             jop.showMessageDialog(null"未检索到输入字符,请重新查找""提示",JOptionPane.PLAIN_MESSAGE);  
  14.         }  
  15.     }  
  16. }  
1 0
原创粉丝点击