• java文本编辑器5


      1 package peng_jun;
      2 
      3 import java.awt.*;
      4 import java.awt.event.*;
      5 
      6 import javax.swing.*;
      7 
      8 import java.io.*;
      9 
     10 import javax.swing.filechooser.*;
     11 
     12 import java.awt.datatransfer.*;
     13 
     14 public class Text4 extends JFrame {
     15     public static void main(String[] args) throws Exception {
     16         new Text4();
     17     }
     18 
     19     JTextArea area = new JTextArea();;// 文本域
     20     String name = null;// 文件名
     21     String board = null;
     22     Clipboard cb;// 系统粘贴板 此类实现一种使用剪切/复制/粘贴操作传输数据的机制
     23 
     24     JMenu font = new JMenu("字体");
     25     JMenuItem bold = new JMenuItem("加粗");
     26     JMenuItem italics = new JMenuItem("斜体");
     27     JMenu size = new JMenu("字号");
     28     JMenuItem size_18 = new JMenuItem("18");
     29     JMenuItem size_19 = new JMenuItem("19");
     30     JMenuItem size_20 = new JMenuItem("20");
     31     JMenuItem size_21 = new JMenuItem("21");
     32     JMenu color = new JMenu("颜色");
     33     JMenuItem red = new JMenuItem("红色");
     34     JMenuItem blue = new JMenuItem("蓝色");
     35 
     36     JMenu file = new JMenu("文件");// 定义“文件”菜单项
     37     JMenuItem rebuild = new JMenuItem("新建");
     38     JMenuItem save = new JMenuItem("保存");
     39     JMenuItem open = new JMenuItem("打开");
     40     JMenuItem anotherSave = new JMenuItem("另存为");
     41     JMenuItem clear = new JMenuItem("清除");
     42     JMenuItem close = new JMenuItem("退出");
     43 
     44     JMenu edit = new JMenu("编辑");// 定义“编辑”菜单项
     45     JMenuItem cut = new JMenuItem("剪切");
     46     JMenuItem copy = new JMenuItem("复制");
     47     JMenuItem plaster = new JMenuItem("粘贴");
     48     JMenuItem all = new JMenuItem("全选");
     49     JMenuItem replice = new JMenuItem("替换");
     50     JMenuItem check = new JMenuItem("查找");
     51 
     52     JMenu help = new JMenu("帮助");// 定义“帮助”菜单项
     53     JMenuItem about = new JMenuItem("关于");
     54 
     55     Toolkit kit = Toolkit.getDefaultToolkit();// Toolkit获得本机系统的屏幕的参数
     56     JMenuBar jmb = new JMenuBar();// 创建菜单条
     57 
     58     Text4() throws Exception {// 构造函数
     59         setTitle("记事本");
     60 
     61         // 设置快捷键
     62         bold.setAccelerator(KeyStroke.getKeyStroke("ctrl B"));
     63         italics.setAccelerator(KeyStroke.getKeyStroke("ctrl I"));
     64         rebuild.setAccelerator(KeyStroke.getKeyStroke("ctrl N"));
     65         save.setAccelerator(KeyStroke.getKeyStroke("ctrl S"));
     66         copy.setAccelerator(KeyStroke.getKeyStroke("ctrl C"));
     67         open.setAccelerator(KeyStroke.getKeyStroke("ctrl O"));
     68         cut.setAccelerator(KeyStroke.getKeyStroke("ctrl X"));
     69         plaster.setAccelerator(KeyStroke.getKeyStroke("ctrl V"));
     70         all.setAccelerator(KeyStroke.getKeyStroke("ctrl A"));
     71         replice.setAccelerator(KeyStroke.getKeyStroke("ctrl H"));
     72         check.setAccelerator(KeyStroke.getKeyStroke("ctrl F"));
     73         
     74 
     75         add(jmb);
     76         setJMenuBar(jmb);// 设置菜单条
     77         add(area);
     78         file.add(rebuild);
     79         file.add(save);
     80         file.add(open);
     81         file.add(anotherSave);
     82         file.addSeparator();
     83         file.add(clear);
     84         file.add(close);
     85         // JScrollPane scroldPane=new JScrollPane(area); //设置滚动轴
     86         // add(scroldPane);
     87 
     88         edit.add(cut);
     89         edit.add(copy);
     90         edit.add(plaster);
     91         edit.add(all);
     92         edit.addSeparator();
     93         edit.add(replice);
     94         edit.add(check);
     95 
     96         font.add(bold);
     97         font.add(italics);
     98         size.add(size_18);
     99         size.add(size_19);
    100         size.add(size_20);
    101         size.add(size_21);
    102         color.add(red);
    103         color.add(blue);
    104         font.add(size);
    105         font.add(color);
    106 
    107         help.add(about);
    108         // 添加事件
    109         clear.addActionListener(new HandleAct());
    110         close.addActionListener(new HandleAct());
    111         bold.addActionListener(new HandleAct());
    112         italics.addActionListener(new HandleAct());
    113         size_18.addActionListener(new HandleAct());
    114         size_19.addActionListener(new HandleAct());
    115         size_20.addActionListener(new HandleAct());
    116         size_21.addActionListener(new HandleAct());
    117         red.addActionListener(new HandleAct());
    118         blue.addActionListener(new HandleAct());
    119         replice.addActionListener(new HandleAct());
    120         check.addActionListener(new HandleAct());
    121 
    122         jmb.add(file);
    123         jmb.add(edit);
    124         jmb.add(font);
    125         jmb.add(help);
    126         setSize(600, 400);// 大小信息
    127         // setLocation(300, 200);// 文本框位置
    128         setVisible(true);
    129         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    130 
    131         cb = Toolkit.getDefaultToolkit().getSystemClipboard();// 调用系统剪贴板
    132         save.addActionListener(new ActionListener() {
    133             public void actionPerformed(ActionEvent e) {
    134                 try {
    135                     saveText();
    136                 } catch (Exception ex) {
    137                 }
    138             }
    139         });
    140         open.addActionListener(new ActionListener() {
    141             public void actionPerformed(ActionEvent e) {
    142                 try {
    143                     openText();
    144                 } catch (Exception ex) {
    145                 }
    146             }
    147         });
    148         rebuild.addActionListener(new ActionListener() {
    149             public void actionPerformed(ActionEvent e) {
    150                 try {
    151                     area.setText("");
    152                     name = null;
    153                 } catch (Exception ex) {
    154                 }
    155             }
    156         });
    157         anotherSave.addActionListener(new ActionListener() {
    158             public void actionPerformed(ActionEvent e) {
    159                 anotherSaveText();
    160             }
    161         });
    162 
    163         size_18.addActionListener(new ActionListener() {
    164 
    165             @Override
    166             public void actionPerformed(ActionEvent e) {
    167                 // TODO 自动生成的方法存根
    168                 Font oldF = area.getFont();// 获取当前字体
    169                 String name = oldF.getName();// 获取当前字体的名字
    170                 area.setFont(new Font(name, oldF.getStyle(), 18));
    171             }
    172         });
    173 
    174         cut.addActionListener(new ActionListener() // 剪切
    175         {
    176             public void actionPerformed(ActionEvent e) {
    177                 board = area.getSelectedText();
    178                 cb.setContents(new StringSelection(board), null);
    179                 area.replaceRange("", area.getSelectionStart(),
    180                         area.getSelectionEnd());
    181             }
    182         });
    183         copy.addActionListener(new ActionListener() // 复制
    184         {
    185             public void actionPerformed(ActionEvent e) {
    186                 board = area.getSelectedText();
    187                 cb.setContents(new StringSelection(board), null);
    188             }
    189         });
    190         plaster.addActionListener(new ActionListener() // 粘贴
    191         {
    192             public void actionPerformed(ActionEvent e) {
    193                 try {
    194                     Transferable content = cb.getContents(null);
    195                     String st = (String) content
    196                             .getTransferData(DataFlavor.stringFlavor);
    197                     area.replaceRange(st, area.getSelectionStart(),
    198                             area.getSelectionEnd());
    199                 } catch (Exception ex) {
    200                 }
    201             }
    202         });
    203         all.addActionListener(new ActionListener() // 全选
    204         {
    205             public void actionPerformed(ActionEvent e) {
    206                 area.setSelectionStart(0);
    207                 area.setSelectionEnd(area.getText().length());
    208             }
    209         });
    210 
    211         about.addActionListener(new ActionListener() {// 帮助
    212             public void actionPerformed(ActionEvent e) {
    213                 JFrame frame = new JFrame("关于");
    214                 frame.setSize(250, 150);
    215                 frame.setLocation(400, 300);
    216                 JTextArea area1 = new JTextArea("java简易文本编辑器开发人员:" + '
    '
    217                         + "彭军军 201321091103," + '
    ' + "鲍静瑶201321091080,"
    218                         + '
    ' + "刘瑾 201321091081.");
    219                 frame.add(area1);
    220                 frame.setVisible(true);
    221             }
    222         });
    223     }
    224 
    225     public void openText() // 打开
    226     {
    227         /*
    228          * 在选择文件方法中,首先创建JFileChooser文件选择器,
    229          * 使用JFileChooser类的setFileFilter()方法创建文件扩展名过滤器,再使用JFileChooser类
    230          * 的setFileSelectionMode()方法设置文件选择模式为文件,
    231          * 通过JFileChooser类的showOpenDialog()方法显示文件打开对话框,确定用户按下打开按钮,
    232          * 而非取消按钮后,通过JFileChooser类的getSelectedFile()方法获取用户选择的文件对象,
    233          * 使用JTextField类的setText()方法显示文件信息到文本框。
    234          */
    235         JFileChooser chooser = new JFileChooser();//创建JFileChooser文件选择器
    236         FileNameExtensionFilter filter = new FileNameExtensionFilter("Files",
    237                 "txt", "java","html","css","js");//文件过滤器
    238         chooser.setFileFilter(filter);
    239         chooser.setCurrentDirectory(new File("."));
    240         int result = chooser.showOpenDialog(Text4.this);//打开当前文件夹
    241         if (result == JFileChooser.APPROVE_OPTION) {//用户按下了yes
    242             name = chooser.getSelectedFile().getPath();//获取文件对象
    243             setTitle(name);
    244             try {
    245                 BufferedReader in = new BufferedReader(new FileReader(name));
    246                 String line = null;
    247                 String datas = "";//保存数据
    248                 //用while循环来判断读取是否结束  此处用的是行读取
    249                 while ((line = in.readLine()) != null) {
    250                     if (datas == "") {
    251                         datas = datas + line;
    252                     } else {
    253                         datas = datas + "
    " + line;
    254                     }
    255                 }
    256                 area.setText(datas);
    257                 in.close();
    258             } catch (Exception ex) {
    259             }
    260         }
    261     }
    262 
    263     public void saveText() // 保存
    264     {
    265         if (name == null) {
    266             JFileChooser chooser = new JFileChooser();
    267             FileNameExtensionFilter filter = new FileNameExtensionFilter(
    268                     "Files", "txt", "java");// 限制扩展名,只能杜渠道txt和java类型的文件
    269             chooser.setFileFilter(filter);
    270             chooser.setCurrentDirectory(new File("."));//设置当前目录
    271             int result = chooser.showSaveDialog(Text4.this);
    272             if (result == JFileChooser.APPROVE_OPTION) {//用户按下了yes
    273                 name = chooser.getSelectedFile().getPath();
    274                 try {
    275                     OutputStream out = new FileOutputStream(name);
    276                     String datas = area.getText();
    277                     out.write(datas.getBytes());
    278                     out.close();
    279                 } catch (Exception ex) {
    280                 }
    281             }
    282         }
    283     }
    284 
    285     public void anotherSaveText() // 另存为
    286     {
    287         JFileChooser chooser = new JFileChooser();
    288         FileNameExtensionFilter filter = new FileNameExtensionFilter("Files",
    289                 "txt", "java","html","js","css");
    290         chooser.setFileFilter(filter);
    291         chooser.setCurrentDirectory(new File("."));
    292         int result = chooser.showSaveDialog(Text4.this);
    293         if (result == JFileChooser.APPROVE_OPTION) {//用户按下了yes
    294             name = chooser.getSelectedFile().getPath();
    295             try {
    296                 OutputStream out = new FileOutputStream(name);
    297                 String datas = area.getText();
    298                 out.write(datas.getBytes());
    299                 out.close();
    300             } catch (Exception ex) {
    301             }
    302         }
    303     }
    304 
    305     class HandleAct implements ActionListener {// 内部类
    306 
    307         public void actionPerformed(ActionEvent e) {
    308             // TODO 自动生成的方法存根
    309             Font oldF = area.getFont();// 获取当前字体
    310             String name = oldF.getName();// 获取当前字体的名字
    311             int size = oldF.getSize();// 当前字体的大小
    312             if (e.getSource() == size_18)
    313                 area.setFont(new Font(name, oldF.getStyle(), 18));
    314             else if (e.getSource() == size_19)
    315                 area.setFont(new Font(name, oldF.getStyle(), 19));
    316             else if (e.getSource() == size_20)
    317                 area.setFont(new Font(name, oldF.getStyle(), 20));
    318             else if (e.getSource() == size_21)
    319                 area.setFont(new Font(name, oldF.getStyle(), 21));
    320 
    321             if (e.getSource() == red) {
    322                 area.setForeground(Color.red);// 设置文字颜色
    323             } else if (e.getSource() == blue) {
    324                 area.setForeground(Color.blue);// 设置文字颜色
    325             }
    326 
    327             if (e.getSource() == bold) {
    328                 area.setFont(new Font(name, Font.BOLD, size));
    329             } else if (e.getSource() == italics) {
    330                 area.setFont(new Font(name, Font.ITALIC, size));
    331             }
    332 
    333             if (e.getSource() == clear) {
    334                 area.setText(" ");
    335             } else if (e.getSource() == close) {
    336                 System.exit(0);
    337             }
    338 
    339             if (e.getSource() == replice) {
    340                 //替换弹出框的布局
    341                 JPanel replacePanel = new JPanel();
    342                 JLabel lookupLabel = new JLabel("要替换的内容");
    343                 JTextField inputText = new JTextField(10);
    344                 JLabel replaceLabel = new JLabel("替换为");
    345                 JTextField changetoText = new JTextField(10);
    346                 replacePanel.add(lookupLabel);
    347                 replacePanel.add(inputText);
    348                 replacePanel.add(replaceLabel);
    349                 replacePanel.add(changetoText);
    350                 //布局结束
    351                 JOptionPane.showMessageDialog(null, replacePanel);
    352                 String text = area.getText();//获得整个文本内容
    353                 String changeText = text.replace(inputText.getText(),
    354                         changetoText.getText());//启用replace功能函数
    355                 area.setText(changeText);
    356             }
    357             else if (e.getSource() == check) {
    358                 //查找弹出框的布局
    359                 JPanel swapPanel=new JPanel();
    360                 JLabel seekLabel=new JLabel("要查找的内容");
    361                 JTextField inputText=new JTextField(20);
    362                 swapPanel.add(seekLabel);
    363                 swapPanel.add(inputText);
    364                 JOptionPane.showMessageDialog(null,swapPanel);
    365                 //布局结束
    366                 String text=area.getText();//获得整个文本内容
    367                 int fromIndex=area.getCaretPosition();//取得当前的光标位置
    368                 int lastfromIndex=text.lastIndexOf(inputText.getText(),fromIndex);//获得查找后的位置
    369                 area.setCaretPosition(lastfromIndex);
    370                 area.moveCaretPosition(lastfromIndex+inputText.getText().length());//使查找到的子字符串显示出来
    371             }
    372 
    373         }
    374 
    375     }
    376 
    377 }
  • 相关阅读:
    创建与合并分支
    Git丢弃本地修改
    《人月神话》小记
    财商培养
    赚钱有道,增加睡后收入
    学点经济学,升级认知
    保险小白普及知识
    管理决策、资源分配的最理想状态
    AI时代做一个终身学习者
    基于需求的测试
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/4584441.html
Copyright © 2020-2023  润新知