文本编辑器 GUI IO编程

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

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

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

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

帮助:关于

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

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

 

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

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

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

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

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

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

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

提示。



代码如下:

[java]  view plain copy 在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 plain copy 在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 plain copy 在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 plain copy 在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 plain copy 在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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值