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简易文本编辑器开发人员:" + ‘\n‘
217                         + "彭军军 201321091103," + ‘\n‘ + "鲍静瑶201321091080,"
218                         + ‘\n‘ + "刘瑾 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 + "\n" + 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 }
时间: 2024-10-25 03:52:33

java文本编辑器5的相关文章

java文本编辑器v2.0 图形用户界面

package 文本编辑器; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GraphicsEnvironment; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListe

java文本编辑器 版本4

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 Text3 extends JFrame { 15 public sta

Java文本编辑器中遇到的问题详解

今天介绍文件的读取和写入,分别用FileReader,FileWriter 1,FileWriter类(字符输出流类) 构造方法:FileWriter fw = new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联.文件不存在的话,并创建. 如:FileWriter fw = new FileWriter("C:\\demo.txt"); FileWriter fw = new FileWriter(String fileName

java简单文本编辑器

一.前言 聚天地之灵气,集日月之精华!一个简单的java文本编辑器由此而生.毕设所需,很是无奈! 二.界面预览     三.实现思路 1.字体选择器的实现 (1).字体类 class MyFont{ private Font font; private Color color; public Font getFont() { return font; } public void setFont(Font font) { this.font = font; } public Color getCo

Java笔记第五篇 文本编辑器初见面

#日常唠叨#从现在开始,又要开始讲理论了,小星星努力今天写完文本编辑器之后再用2天时间写完数据类型,然后上代码,另外关于HelloWorld代码的讲解小星星会在写完运算符之后写 编译厉害归厉害,但对我们打代码的流畅度.心情舒畅度有用吗?答案是没用.相信大家用记事本编写代码之后已经心生厌烦了吧?如果这么打上上千行肯定吐血.那小星星现在给大家升级一下记事本. 升级过后的记事本叫啥名字?当然是叫超级记事本文本编辑器啦!小星星在这里推荐以下三款文本编辑器: UltraEdit:是一款功能强大的文本编辑器

百度UMeditor富文本编辑器java使用

百度UMeditor富文本编辑器java使用 1.介绍 UMeditor 是一款轻量级的富文本编辑器,比UEditor要小得多,是为满足广大门户网站对于简单发帖框,或者回复框需求所定制的在线富文本编辑器 2.下载    官网地址:http://ueditor.baidu.com/website/umeditor.html 说明笔者点击官网的下载中的按钮,半天没反应,然后又去了github上down了一份,github地址:https://github.com/fex-team/umeditor/

Java实现简易的文本编辑器

需求分析: 获得文本名称 实现尾部追加功能 实现覆盖式添加数据 删除数据 获取光标位置 在特定光标位置处添加数据 查找特定字符串在主串中第一次出现的位置 统计文本文件内出现的数字,汉字,英文字母,特殊字符的个数,及总的字符个数 开发环境: windows7 + Eclipse luna + WindowsBuilder插件 代码实现: import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.ev

Java实现"命令式"简易文本编辑器原型

源自早先想法, 打算从界面方向做些尝试. 找到个简单文本编辑器的实现: Simple Text Editor - Java Tutorials. 原本的菜单/按钮界面如下. 包括基本功能: 新建/打开/保存文件, 文本编辑与剪切/复制/粘贴. 把所有菜单/按钮替换为命令输入后效果如下, 源码库在: program-in-chinese/simple-text-editor-in-Java. 与其他命令行工具一样, 省去界面元素的代价是输入较繁琐. 在文本和命令两处切换也有点麻烦. 接下去试着实现

Android富文本编辑器RichEditor的使用

以前有个项目做一个笔记本类似的东西,觉得写的不太好,最近重新写,就发现了这个富文本编辑器他的效果是这样的 感觉有点厉害啊 废话不多说开始撸码 1先添加依赖 dependencies { compile 'jp.wasabeef:richeditor-android:1.2.0' } 2写布局 <jp.wasabeef.richeditor.RichEditor android:id="@+id/editor" android:layout_width="match_pa