免费java文本编辑器代码_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 classText4 extends JFrame {15 public static voidmain(String[] args) throws Exception {16 newText4();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(newHandleAct());110 close.addActionListener(newHandleAct());111 bold.addActionListener(newHandleAct());112 italics.addActionListener(newHandleAct());113 size_18.addActionListener(newHandleAct());114 size_19.addActionListener(newHandleAct());115 size_20.addActionListener(newHandleAct());116 size_21.addActionListener(newHandleAct());117 red.addActionListener(newHandleAct());118 blue.addActionListener(newHandleAct());119 replice.addActionListener(newHandleAct());120 check.addActionListener(newHandleAct());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(newActionListener() {133 public voidactionPerformed(ActionEvent e) {134 try{135 saveText();136 } catch(Exception ex) {137 }138 }139 });140 open.addActionListener(newActionListener() {141 public voidactionPerformed(ActionEvent e) {142 try{143 openText();144 } catch(Exception ex) {145 }146 }147 });148 rebuild.addActionListener(newActionListener() {149 public voidactionPerformed(ActionEvent e) {150 try{151 area.setText("");152 name = null;153 } catch(Exception ex) {154 }155 }156 });157 anotherSave.addActionListener(newActionListener() {158 public voidactionPerformed(ActionEvent e) {159 anotherSaveText();160 }161 });162

163 size_18.addActionListener(newActionListener() {164

165 @Override166 public voidactionPerformed(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 voidactionPerformed(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 voidactionPerformed(ActionEvent e) {186 board =area.getSelectedText();187 cb.setContents(new StringSelection(board), null);188 }189 });190 plaster.addActionListener(new ActionListener() //粘贴

191 {192 public voidactionPerformed(ActionEvent e) {193 try{194 Transferable content = cb.getContents(null);195 String st =(String) content196 .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 voidactionPerformed(ActionEvent e) {206 area.setSelectionStart(0);207 area.setSelectionEnd(area.getText().length());208 }209 });210

211 about.addActionListener(new ActionListener() {//帮助

212 public voidactionPerformed(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(newFileReader(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 = newJFileChooser();267 FileNameExtensionFilter filter = newFileNameExtensionFilter(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 = newFileOutputStream(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 = newJFileChooser();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 = newFileOutputStream(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 voidactionPerformed(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(newFont(name, Font.BOLD, size));329 } else if (e.getSource() ==italics) {330 area.setFont(newFont(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 = newJPanel();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=newJPanel();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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值