java文本编辑器源码

合集下载

java课设文本编辑器的设计与实现

java课设文本编辑器的设计与实现

淮海工学院计算机工程学院
课程设计报告
设计名称:面向对象课程设计
选题名称:文本编辑器的设计与实现
姓名:学号:
专业班级:
系(院):计算机工程学院
设计时间:2015.6.21~2014.7.4
设计地点:计算机楼机房、教室、宿舍
();
("确定");
("这是一个简单的文本编辑器!");
();
();
();
(200,200,250,150);
();
(20 ,60,220,30);
( ("楷体",16));
();
(100,100,50,30);
();
}
( e)
{
(())
{
();
}
}
}
4.2运行结果显示
如图1:文本编辑器主界面
如图2:文本编辑器文件菜单
如图3:
文本
编辑
器编
辑菜

如图4:文本编辑器格式菜单
如图5:文本编辑器帮助菜单
如图6:文本编辑器字体格式和背景
如图7:
文本编。

代码编辑器的java实现

代码编辑器的java实现

代码编辑器的java实现摘要如果我们把不同的程序开发人员比作三国演义中的各路诸侯大将的话,那么代码编辑器绝对可以称之我们手中的神兵利器。

对于每个程序猿来说,内心的深处都想有一把自己的“青龙偃月刀”和属于自己的一个代码编辑器。

我也有这个想法,我也想自己写一个代码编辑器来满足我的内心深处。

所以这次java的课程作业我选择了这个题目!关键词:Java;代码编辑器;关键字变色;编译和运行前言通过一学期的Java学习,我对Java的理论知识有了一些了解。

但是,只有理论联系实际才能更好的掌握理论,所以这次Java课程设计我选择了Java程序编辑器这个课题,希望可以锻炼自己的动手能力。

我上交给老师您的代码是我参考的网上的一个牛人写的代码,并在他的代码上进行了功能的增加,至于我增加了多少功能,我会论文的附录中给出详细的对比。

1. 软件的定义编写一个界面像Windows系统的记事本的代码编辑器,功能比记事本更强大(针对某一方面)具备以下功能:(1)打开、保存文件功能;(2)能够识别Java中的关键字并能将关键字以高亮的形式显示出来;(3)能够批量的删除代码中的注释;(4)能通过按下按钮调用DOS窗口;(5)能编译和运行Java程序;(6)能够检查括号是否匹配。

2.开发环境IDE: eclipseJDK: jdk-7u45-windows-x64OS:Windows 7 —X643.代码的详细说明主界面:syntaxcolor.v4包中的DemoFrame.java文件,主界面就是一个Frame,然后在上面加上一个菜单栏,一个工具栏和两个Panel,一个panel里面放着JTextPane,另一个里面放着一个几个JLable,用来显示当前鼠标是在第几行,第几列,该Panel放在Frame最下面。

菜单栏:总共有3个JMenu,一个是文件,一个是编辑,一个是帮助。

3个菜单里面各有下拉菜单。

文件JMenu有2个JMenuItem分别为openMenuItem、ExitMenuItem,编辑JMenu有2个JMenuItem分别为cutMentItem、pasteMEnuItem,帮助JMenu有一个JMenuItem是aboutMenuItem用来显示代码编辑器的相关的信息。

java实现简易文本编辑器

java实现简易文本编辑器

java实现简易文本编辑器importjava.awt.某; importjava.awt.event.某; importjava 某.wing.某; importjava某.wing.event.某; importjava.util.某; importjava.io.某; importjava某.wing.filechooer.某; importjava某.wing.filechooer.FileFilter; importjava.awt.datatranfer.某; publicclaTe某te某tendJFrame { Te某tAreaarea; Stringname=null; Stringboard=null; privateClipboar dcb; publicTe某t()throwE某ception { etTitle("记事本"); Toolkitkit=Toolkit.getDefaultToolkit(); Imageimg=kit.getIm age("01.jpg"); etIconImage(img); JMenuBarjmb=newJMenuBar(); a dd(jmb); etJMenuBar(jmb); JMenufile=newJMenu("文件"); JMenuedit=newJMenu("编辑"); JMenuItemrebuild=newJMenuItem("新建"); JMenuItemave=newJMenuItem("保存"); JMenuItemopen=newJMenuItem("打开"); JMenuItemanotherSave=newJMenuItem("另存为"); file.add(rebuild); file.add(ave); file.add(open); file.a dd(anotherSave); rebuild.etAccelerator(KeyStroke.getKeyStroke(" ctrlN")); open.etAccelerator(KeyStroke.getKeyStroke("ctrlO")); ave.etAccelerator(KeyStroke.getKeyStroke("ctrlS")); anotherSa ve.etAccelerator(KeyStroke.getKeyStroke("ctrlA")); area=newTe 某tArea(); add(area); //JScrollPanecroldPane=newJScrollPane(area );//设置滚动轴//add(croldPane); ave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ aveTe某t(); }catch(E某ceptione某) { } } }); open.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ openTe某t(); }catch(E某ceptione某) { } } }); rebuild.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { try{ area.etTe 某t(""); name=null; }catch(E某ceptione某) {} } }); anotherSave.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { anotherSaveTe 某t(); } }); JMenuItemcut=newJMenuItem("剪切"); JMenuItemcopy=newJMenuItem("复制"); JMenuItemplater=newJMenuItem("粘贴"); JMenuItemall=newJMenuItem("全选"); edit.add(cut); edit.add(copy); edit.add(plater); edit.ad d(all); cut.etAccelerator(KeyStroke.getKeyStroke("ctrl某")); copy.etAccelerator(KeyStroke.getKeyStroke("ctrlC")); plat er.etAccelerator(KeyStroke.getKeyStroke("ctrlV")); all.etAccele rator(KeyStroke.getKeyStroke("ctrlA")); cb=Toolkit.getDefaultTo olkit().getSytemClipboard(); cut.addActionLitener(newActionLite ner()//剪切{ publicvoidactionPerformed(ActionEvente) { board=area.ge tSelectedTe某t(); cb.etContent(newStringSelection(board),null); area.replaceRange("",area.ge tSelectionStart(),area.getSelectionEnd()); } }); copy.addActionLitener(newActionLitener()//复制{ publicvoidactionPerformed(ActionEvente) { board=area.getSelectedTe某t(); cb.etContent(newStringSelection(board),null); } }); pla ter.addActionLitener(newActionLitener()//粘贴{ publicvoidactionPerformed(ActionEvente) { try{ Tranfer ablecontent=cb.getContent(null); Stringt=(String)content.getTra nferData(DataFlavor.tringFlavor); area.replaceRange(t,area.getS electionStart(),area.getSelectionEnd()); }catch(E某ceptione 某) {} } }); all.addActionLitener(newActionLitener()//全选{ publicvoidactionPerformed(ActionEvente) { area.etSelect ionStart(0); area.etSelectionEnd(area.getTe某t().length()); } }); JMenuhelp=newJMenu("帮助"); JMenuItemabout=newJMenuItem("关于"); help.add(about); about.addActionLitener(newActionLitener() { publicvoidactionPerformed(ActionEvente) { JFrameframe=new JFrame("关于"); frame.etSize(150,100); frame.etLocation(400,300); JTe某tAreaarea1=newJTe某tArea("制作人:杨杰\n制作时间:2022.8.03"); frame.add(area1); frame.etViible(true); } }); jmb.add(file); jmb.add(edit); jmb.add(help); etSize(600,400);etLocation(300,200); etViible(true); etDefaultCloeOperation( JFrame.E某IT_ON_CLOSE); } publicvoidopenTe某t()//打开{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howOpenDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); etTitle(name); try{ BufferedReade rin=newBufferedReader(newFileReader(name)); Stringline=null; S tringdata=""; while((line=in.readLine())!=null) { if(data=="" ) { data=data+line; } ele { data=data+"\n"+line; } } ar ea.etTe某t(data); in.cloe(); }catch(E某ceptione某) { } } } publicvoidaveTe某t()//保存{ if(name==null) { JFileChooerchooer=newJFileChooer(); F ileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } ele { try{ OutputStreamout=newFileOutputStre am(name); Stringdata=area.getTe某t() ; out.write(data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publicvoidanotherSaveTe某t()//另存为{ JFileChooerchooer=newJFileChooer(); FileNameE某tenionFilterfilter=newFileNameE某tenionFilter("File","t某t","java"); chooer.etFileFilter(filter); chooer.etCurrentDirec tory(newFile(".")); intreult=chooer.howSaveDialog(Te某t.thi); if(reult==JFileChooer.APPROVE_OPTION) { name=chooer.g etSelectedFile().getPath(); try{ OutputStreamout=newFileOutput Stream(name); Stringdata=area.getTe某t(); out.write( data.getByte()); out.cloe(); }catch(E某ceptione某) { } } } publictaticvoidmain(String[]arg)throwE 某ception { newTe某t(); } }。

基于Java Web的HTML在线文本编辑器解决方案

基于Java Web的HTML在线文本编辑器解决方案

基于Java Web的HTML在线文本编辑器解决方案摘要:FckEditor作为众多优秀HTML在线文本编辑器之一,以其支持多语言的优势而受到众多国内外开发者的亲睐。

在Java Web开发中使用FCKeditor可以实现类似微软Word桌面文本编辑器的许多强大功能,因此掌握FckEditor在Java Web开发环境下的配置过程也是开发者必备的技能之一。

关键词:Jsp;FckEditor;HTML;在线文本编辑器2基于Java Web 的HTML在线编辑器解决方案著名的开源网页编辑软件FCKEditor在09年发布至现在已经更新到3.0版本,FckEditor由于其资源轻量化、配置简单、免费开源、文本编辑功能齐全、支持多浏览器、支持PHP、JavaScript、ASP、、ColdFusion、Java、以及ABAP等不同的编程语言的强大优势,受到众多开发者亲睐。

目前,众多的Java Web 项目中FckEditor成为开发者对在线编辑器的首选,为网络文本交互提供文本样式编辑、图片上传下载和附件上传下载的功能。

3FckEditor编辑器在Java Web开发中的配置3.1开发环境和FckEditor配置文件(1)开发环境:MyEclipse7.5 ,JDK1.6 ,tomcat6.0;(2)FckEditor配置文件:FckEditor2.6.6,FckEditor java demo 2.6;3.2FckEditor在Java Web中的基本配置(1)在MyExclipse文件下建设Java Web项目FckEditor。

(2)解压FckEditor_2.6.6.zip文件,将解压后的根目录下的FckEditor文件夹拷贝到SSH框架项目下的WebRoot目录里;(3)将下载FckEditor java demo 2.6文件解压后,把根目录下Web INF中的lib里5个.jar文件:commons fileupload 1.2.1.jar、commons io 1.3.2.jar、FckEditor java core 2.4.jar、slf4j api 1.5.2.jar及slf4j simple 1.5.2.jar 拷贝到SSH框架项目下的Web INF目录中的lib目录里。

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。

它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。

本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。

一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面:1. 用户界面设计:一个好的文本编辑器应具备直观友好的用户界面,提供各种操作选项和快捷键,使用户能够轻松地进行文本编辑。

2. 文本处理功能:文本编辑器应具备基本的文本处理功能,如插入和删除文本、查找和替换、拷贝和粘贴等。

这些功能需要通过合适的数据结构和算法来实现。

3. 文本格式化:文本编辑器应支持对文本进行格式化操作,如自动对齐、缩进、换行等。

4. 多标签支持:多标签功能允许用户同时打开多个文本文件,并在它们之间切换。

这要求程序设计中能够有效地管理多个文本文件的打开、关闭和切换。

二、代码示例下面是几个简单的代码示例,用于展示文本编辑器的一些基本功能。

1. 创建文本文件```pythondef create_file(filename):# 创建一个新的文本文件file = open(filename, "w")file.close()```2. 打开文本文件```pythondef open_file(filename):# 打开文本文件并返回文件对象 file = open(filename, "r")return file```3. 插入文本```pythondef insert_text(file, position, text): # 在指定位置插入文本file.seek(position)content = file.read()file.seek(position)file.write(text + content)```4. 删除文本```pythondef delete_text(file, start, end):# 删除指定位置的文本file.seek(start)content = file.read()file.seek(start)file.write(content[:end - start])```5. 查找和替换文本```pythondef find_replace(file, old_text, new_text):# 在文本中查找指定内容并替换file.seek(0)content = file.read()new_content = content.replace(old_text, new_text)file.seek(0)file.write(new_content)```6. 关闭文本文件```pythondef close_file(file):# 关闭文本文件file.close()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。

java languagetool 示例代码

java languagetool 示例代码

java languagetool 示例代码
以下是一个简单的Java语言工具示例代码,用于展示如何使用`LanguageTool`的`jar`包来进行语言矫正:
```java
import nguagetool.JLanguageTool;
public class Main {
public static void main(String[] args) {
JLanguageTool languageTool = new JLanguageTool();
String text = "这是一个测试文本,用于展示如何使用 LanguageTool。

";
String[] argsArray = {"--linelength", "80"};
int n = languageTool.check(text, argsArray);
System.out.println("检查结果:" + n + "个错误");
}
}
```
在上述代码中,我们首先导入了`JLanguageTool`类。

然后,创建了一个`JLanguageTool`对象,并将需要检查的文本传递给`check`方法。

`argsArray`是一个包含参数的数组,在这个例子中,我们指定了最大行长度为80。

最后,我们将检查结果打印出来。

请注意,这只是一个简单的示例,实际使用时可能需要根据具体情况进行调整。

如果你需要更复杂的功能或自定义设置,可以查看`LanguageTool`的官方文档或源代码。

文本编辑器源码

文本编辑器源码
ColorSlider1.setPaintTicks(true);
ColorSlider2.setPaintTicks(true);
ColorSlider3.setPaintTicks(true);
ColorSlider1.setMajorTickSpacing(51);
ColorSlider2.setMajorTickSpacing(51);
public class EditPanel extends JPanel
{
public EditPanel()
{
JPanel FontPanel = new JPanel();
JPanel BackColorPanel = new JPanel();
JPanel TextAreaPanel = new JPanel();
ColorSlider1.setPaintTicks(true);
ColorSlider2.setPaintTicks(true);
ColorSlider3.setPaintTicks(true);
ColorSlider1.setPaintLabels(true);
ColorSlider2.setPaintLabels(true);
CopyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
CopyItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
Action pictureAction = new PictureAction();

java文本编辑器源码

java文本编辑器源码

/** To change this template, choose Tools | Templates* and open the template in the editor.*/package NotepadDemo;/**** @author DELL*/import java.awt.BorderLayout;import java.awt.FileDialog;import java.awt.Font;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.TitledBorder;public class NotepadDemo extends JFrame {private static final long serialVersionUID = -5355432125621015300L;private String url = null;//文件路径private String str=null;//复制或剪切的字符串private StringSelection stringSelection=null;private Clipboard clipboard=new Clipboard(str);private Transferable transferable=null;private DataFlavor flavor=null;public NotepadDemo() {init();}private void init() {setTitle("文本编辑器");setSize(500, 600);setContentPane(createContentPane());//添加主面板}/*创建主面板*/private JPanel createContentPane() {JPanel pane = new JPanel(new BorderLayout());pane.add(BorderLayout.NORTH, createChocePane());//添加菜单栏pane.add(createAreaPane());//添加文本编辑区域return pane;}/*创建菜单栏,以及实现功能*/private JPanel createChocePane() {JPanel pane = new JPanel();JMenuBar menuBar1 = new JMenuBar();JMenu menu = new JMenu("文件");menuBar1.add(menu);JMenuItem menuIt1 = new JMenuItem("新建");JMenuItem menuIt2 = new JMenuItem("打开");JMenuItem menuIt3 = new JMenuItem("保存");JMenuItem menuIt4 = new JMenuItem("另存为");menu.add(menuIt1);menu.add(menuIt2);menu.add(menuIt3);menu.add(menuIt4);JMenuBar menuBar2 = new JMenuBar();JMenu menu2 = new JMenu("编辑");menuBar2.add(menu2);JMenuItem menuIt5 = new JMenuItem("复制");JMenuItem menuIt6 = new JMenuItem("剪切");JMenuItem menuIt7 = new JMenuItem("粘帖");menu2.add(menuIt5);menu2.add(menuIt6);menu2.add(menuIt7);JMenuBar menuBar3 = new JMenuBar();JMenu menu3 = new JMenu("帮助");menuBar3.add(menu3);JMenuItem menuIt8 = new JMenuItem("关于记事本");menu3.add(menuIt8);pane.add(menuBar1);pane.add(menuBar2);pane.add(menuBar3);menuIt1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {testArea.setText(null);}});menuIt2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {final FileDialog fd = new FileDialog(new JFrame(), "查找文件",FileDialog.LOAD);fd.setVisible(true);if (fd.getDirectory() != null && fd.getFile() != null) {testArea.setText(null);url = fd.getDirectory() + fd.getFile();try {BufferedReader in = new BufferedReader(new FileReader(url));for (int i = 0;; i++) {testArea.append(in.readLine());if (in.read() == -1) {break;} elsecontinue;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}});menuIt3.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {if (url==null) {url="D:\\文本编辑器文本文档.txt";}File f = new File(url);BufferedWriter out = null;try {out = new BufferedWriter(new FileWriter(url));f.createNewFile();out.append(testArea.getText());out.flush();} catch (IOException e1) {e1.printStackTrace();} finally {try {out.close();} catch (IOException e1) {e1.printStackTrace();}}}});menuIt4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {FileDialog fd = new FileDialog(new JFrame(), "保存文本",FileDialog.SAVE);fd.setVisible(true);if (url!=null) {File f = new File(url);BufferedWriter out = null;try {f.createNewFile();out = new BufferedWriter(new FileWriter(url));out.append(testArea.getText());out.flush();} catch (IOException e) {e.printStackTrace();} finally {try {out.close();} catch (IOException e) {e.printStackTrace();}}}}});menuIt5.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {str=testArea.getSelectedText();stringSelection=new StringSelection(str);clipboard.setContents(stringSelection, null);}});menuIt6.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {str=testArea.getSelectedText();stringSelection=new StringSelection(str);clipboard.setContents(stringSelection, null);int start=testArea.getSelectionStart();int end=testArea.getSelectionEnd();testArea.replaceRange( null,start,end);}});menuIt7.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {transferable=clipboard.getContents(this);flavor=DataFlavor.stringFlavor;if (transferable.isDataFlavorSupported(flavor)) {int start=testArea.getSelectionStart();int end=testArea.getSelectionEnd();testArea.replaceRange( null,start,end);int pos=testArea.getCaretPosition();try {str=(String)transferable.getTransferData(flavor);testArea.insert(str, pos);} catch (UnsupportedFlavorException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}}}});menuIt8.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {JOptionPane.showMessageDialog(null,"原创");}});return pane;}JTextArea testArea;private JScrollPane createAreaPane() {JScrollPane pane = new JScrollPane();pane.setBorder(new TitledBorder("编辑区域"));testArea = new JTextArea();testArea.setFont(new Font("宋体", Font.BOLD, 13));testArea.setLineWrap(true);pane.getViewport().add(testArea);return pane;}public static void main(String[] args) {NotepadDemo td = new NotepadDemo();td.setVisible(true);}}。

文本编辑器介绍文档

文本编辑器介绍文档

JIANGXI AGRICULTURAL UNIVERSITYJAVA实训课程设计报告题目:文本编辑器学院:软件学院姓名:刘兵学号:20201549专业:软件开发年级:095 班指导教师:易文龙二0 1 1 年 6 月201.系统分析 (3)1.1 需求分析 (3)1.2 可行性研究 (4)1.3 开发及运行环境分析 (4)2.系统设计 (4)2.1系统流程图 (5)2.2系统功能模块分析 (6)3.菜单栏模块 (8)3.1 NotePad类 (8)3.2菜单栏设计 (10)3.21接口类Swing.java代码: (11)3.22菜单栏类Swing_MenuBar.java代码: (11)3.23菜单栏事件类JMenuBar_Listener.java代码: (14)3.3 工具栏 (19)3.31构建工具栏Swing_JToolBar.java类代码: (19)3.32工具栏事件响应类JToolBar_Listener.java代码: (25)3.4 弹出式菜单栏 (31)3.41弹出式菜单栏NotepadPopupMenu.java代码: (31)3.42弹出式菜单栏事件处置类JPopupMenu_Listener.java代码: (34)3.5 文本面板JTextPane和总面板JPanel (35)3.51JTextPane代码: (36)3.52 JPanel的代码: (38)3.6 相关子界面 (39)3.61颜色选择类Swing_JColorDialog.java代码: (39)3.62字体大小设置Swing_JFontSize.java代码: (43)3.63保留文本Swing_SavingDialog.java代码: (47)3.64帮忙Swing_Help.java代码: (49)3.65关于Swing_About.java代码: (51)3.66撤销Swing_Undo.java代码: (54)3.67提示Swing_JDialog.java代码: (56)3.7 相关功能截图 (59)3.71编辑功能截图 (59)3.72保留功能截图 (60)3.73文件打开功能截图 (62)3.74文字加粗、斜体、下划线功能 (62)3.75文本对齐方式功能截图 (64)3.76文字变色、变大小功能截图 (65)3.77文本背景颜色更改功能截图 (67)3.78文本编辑器的帮忙和关于功能截图 (68)1.系统分析1.1 需求分析现今时期,随着科技的进展,人们对信息和文字的处置愈来愈高,要求能有一个高效率、便利的办公软件,来处置繁琐的信息和文字。

25编程器源码

25编程器源码

25编程器源码以下是一些编程器的源代码,可以帮助您在编写软件时提高效率和准确性。

1. 文本编辑器:一个简单的文本编辑器,可以让用户打开、编辑和保存文本文件。

它具有基本的文本编辑功能,如复制、粘贴和查找/替换。

```#include <iostream>#include <fstream>int main() {std::string filename;std::cout << 'Enter filena ';std::cin >> filename;std::ifstream file(filename);if (!file) {std::cout << 'Error opening the file!' << std::endl; return 1;}std::string line;while (std::getline(file, line)) {std::cout << line << std::endl;}file.close();return 0;}```2. 图片处理器:一个可以打开、编辑和保存图像文件的程序。

它可以执行一些基本的图像操作,如调整大小、旋转和应用滤镜。

```#include <iostream>#include <opencv2/opencv.hpp>int main() {std::string filename;std::cout << 'Enter filena ';std::cin >> filename;cv::Mat image = cv::imread(filename);if (image.empty()) {std::cout << 'Error opening the image!' << std::endl; return 1;}// Perform some image processing operations herecv::imshow('Image', image);cv::waitKey(0);cv::destroyAllWindows();return 0;}```3. 数据库管理器:一个用于连接和管理数据库的程序。

深入解析Java编译器:源码剖析与实例详解

深入解析Java编译器:源码剖析与实例详解

6.3类型的定义
6.3.1普通类型的定义 6.3.2泛型相关类型的定义
7.2符号输入的第 一阶段
7.1依赖的处理
7.3符号输入第二 阶段
7.1依赖的处理
7.1.1创建包或类符号 7.1.2输入包或类下的成员符号
7.2符号输入的第一阶段
7.2.1 Enter类 7.2.2 visitTopLevel()方法 7.2.3 visitClassDef()方法 7.2.4 visitTypeParameter()方法
7.3符号输入第二阶段
7.3.1 MemberEnter类 7.3.2 visitImport()方法 7.3.3 visitMethodDef()方法 7.3.4 visitVarDef()方法
8.2初始化注解处 理器
8.1注解处理器基 础
8.3运行注解处理 器
8.1注解处理器基础
8.1.1编写注解处理器 8.1.2注解配置 8.1.3工具类
深入解析Java编译器:源码剖 析与实例详解
读书笔记模板
01 思维导图
03 读书笔记 05 作者介绍
目录
02 内容摘要 04 目录分析 06 精彩摘录
思维导图
本书关键字分析思维导图
岗位
分析 实现 类
语句 生成 树
实例
编译器
市场 第章
检查
编译器
语法
变量
类型
符号
方法
父类
内容摘要
内容摘要
Java是一门流行多年的高级编程语言,相关的就业岗位很多,但是最近几年却出现了用人单位招不到人,大 量研发人员找不到工作的尴尬局面。根本原因还是岗位对技术的要求高,不但要会应用,更要懂其内部的运行原 理。对于想要深入研究Java的从业者来说,目前国内市场上还没有一本剖析Java编译器(Javac)源码的书籍, 也没有一本剖析工业级编译器源码的书籍,这正是本书要填补的市场空白。本书围绕市面上的主流编译器Javac 进行源代码剖析,详细介绍了词法分析、语法分析、语义分析及代码生成等各个阶段的具体实现。另外,本书有 大量的配图和实例,以便读者能更好地理解书中的要点。

如何编译github java源代码

如何编译github java源代码

编译GitHub上的Java源代码是一项重要的技能,它有助于开发人员理解开源项目的工作原理,并进行定制化开发。

下面,我们将介绍如何使用常见的工具和技术来编译GitHub上的Java源代码。

一、下载源代码1. 在GitHub上搜索并找到你感兴趣的Java开源项目。

2. 点击项目页面上的“Clone or download”按钮,复制项目的Git 仓库URL。

3. 在本地的命令行界面中,使用git clone命令将项目克隆到本地。

二、配置开发环境1. 确保你的开发环境中已经安装了Java Development Kit(JDK),并配置了JAVA_HOME环境变量。

2. 如果项目使用了Maven或Gradle等构建工具,你需要在本地安装相应的工具,并配置好对应的环境变量。

三、使用Maven编译Java源代码1. 打开命令行界面,进入到项目的根目录。

2. 执行mvn clean install命令,Maven将会下载依赖、编译源代码并打包项目。

四、使用Gradle编译Java源代码1. 打开命令行界面,进入到项目的根目录。

2. 执行gradle build命令,Gradle将会下载依赖、编译源代码并打包项目。

五、使用Ant编译Java源代码1. 确保你已经安装了Ant,并配置了ANT_HOME环境变量。

2. 在项目根目录的命令行界面中,执行ant命令,Ant将会根据build.xml文件编译源代码。

六、使用集成开发环境(IDE)编译Java源代码1. 打开你喜欢的IDE,比如IntelliJ IDEA、Eclipse等。

2. 导入项目,IDE将会自动下载依赖并编译源代码。

七、其他注意事项1. 在编译过程中可能会遇到依赖缺失、版本不兼容等问题,需要仔细阅读项目的文档和日志,进行相应的调整。

2. 如果项目包含单元测试,你可能需要在编译之前执行测试,并确保所有测试用例通过。

3. 如果你对源代码进行了修改,可以使用相同的步骤来编译并测试你的修改。

JAVA--简单记事本源代码

JAVA--简单记事本源代码

JAVA--简单记事本源代码import javax.swing.JFrame;import javax.swing.JTextArea;import java.awt.*;import java.awt.event.*;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import javax.swing.*;import javax.swing.plaf.FileChooserUI;public class notepad extends JFrame implements ActionListener{//定义所需要的组件JTextArea jta=null;JMenuBar jmb=null;JMenu jm=null;JMenuItem jmi1=null;JMenuItem jmi2=null;public static void main(String[]args){new notepad();}public notepad(){//把组件添加到窗体上jta=new JTextArea();jmb=new JMenuBar();this.add(jta);this.setJMenuBar(jmb);//设置窗体属性this.setTitle("简易记事本");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(400, 300);this.setVisible(true);//把菜单添加进菜单条jm=new JMenu("⽂件");jm.setMnemonic('f');jmb.add(jm);//把⼦菜单加⼊⾄菜单jmi1=new JMenuItem("打开");jmi2=new JMenuItem("保存");jmi1.setActionCommand("open");jmi2.setActionCommand("save");jm.add(jmi1);jm.add(jmi2);//为两个字菜单注册事件监听jmi1.addActionListener(this);jmi2.addActionListener(this);}public void actionPerformed(ActionEvent e){//对点击了打开进⾏处理if(e.getActionCommand().equals("open")){//创建⼀个⽂件选择组件JFileChooser jfc1=new JFileChooser();//设置⽂件选择器的名字jfc1.setDialogTitle("请选择⽂件....");//设置⽂件选择组件的类型(打开类型)jfc1.showOpenDialog(null);//显⽰该组件jfc1.setVisible(true);//获取选择⽂件的绝对路径String s;s=jfc1.getSelectedFile().getAbsolutePath();//将该⽂件显⽰到记事本上BufferedReader br=null;FileReader fr=null;try{//创建⼀个带缓冲的⽂件读取对象fr=new FileReader(s);br=new BufferedReader(fr);String text="";String m=null;//循环读取⽂件while((m=br.readLine())!=null){text+=m+"\r\n";}//将读取的结果打印到记事本上⾯this.jta.setText(text);}catch(Exception e1){e1.printStackTrace();}finally{//关掉打开的⽂件try{br.close();fr.close();}catch(Exception e2){e2.printStackTrace();}}}else if(e.getActionCommand().equals("save")){//创建⼀个⽂件选择组件JFileChooser jfc=new JFileChooser();//设置⽂件选择的名称jfc.setDialogTitle("另存为");//设置⽂件选择组件的类型(保存类型)jfc.showSaveDialog(null);//显⽰该组件jfc.setVisible(true);//获取选择⽂件的绝对路径String filename;filename=jfc.getSelectedFile().getAbsolutePath(); //将记事本内的⽂本保存⾄该路径BufferedWriter bw=null;FileWriter fw=null;try{//创建⽂件输出⽂件fw=new FileWriter(filename);bw=new BufferedWriter(fw);//获取⽂本String outtext="";outtext=this.jta.getText();//输出⽂本fw.write(outtext);}catch(Exception e2){e2.printStackTrace();}finally{//关闭打开的输出⽂件try{bw.close();fw.close();}catch(Exception e3){e3.printStackTrace();}}}}}。

基于Java的文本编辑软件的设计与实现_论文终稿(目录+正文部分)

基于Java的文本编辑软件的设计与实现_论文终稿(目录+正文部分)

目录1 绪论 (1)1.1课题研究的背景及意义 (1)1.2 文本编辑器软件的应用现状 (1)1.3 本文工作和结构安排 (2)1.3.1 本文主要工作 (2)1.3.2 本文结构安排 (3)1.4 小结 (3)2 相关技术介绍 (4)2.1 Java技术 (4)2.1.1 Java特点 (4)2.1.2 程序开发常用包 (5)2.2 小结 (6)3 系统分析与设计 (7)3.1 软件需求分析 (7)3.2 系统类设计 (8)3.3 系统总体设计 (13)3.3.1 设计原理 (15)3.3.2 功能模块划分 (15)3.4 小结 (17)4 详细设计与实现 (18)4.1 系统开发平台及工具选择 (18)4.2 主窗体设计与实现 (18)4.3 新建功能设计与实现 (20)4.3.1 新建功能概述 (20)4.3.2 新建功能技术分析 (20)4.3.3 新建功能实现过程 (21)4.4 打开功能设计与实现 (21)4.4.1 打开功能概述 (21)4.4.2 打开功能技术分析 (21)4.4.3 打开功能实现过程 (22)4.5保存功能设计与实现 (22)4.5.1 保存功能概述 (22)4.5.2 保存功能技术分析 (22)4.5.3 保存功能实现过程 (23)4.6 全选功能设计与实现 (23)4.6.1 全选功能概述 (23)4.6.2 全选功能技术分析 (23)4.6.3 全选功能实现过程 (23)4.7 退出功能设计与实现 (24)4.7.1 退出功能概述 (24)4.7.2 退出功能技术分析 (24)4.7.3 退出功能实现过程 (24)4.8 查找功能设计与实现 (25)4.8.1 查找功能概述 (25)4.8.2 查找功能技术分析 (25)4.8.3 查找功能实现过程 (25)4.9 查找下一个功能设计与实现 (26)4.9.1 查找下一个功能概述 (26)4.9.2 查找下一个功能技术分析 (26)4.9.3 查找下一个功能实现过程 (26)4.10 替换功能设计与实现 (27)4.10.1 替换功能概述 (27)4.10.2 替换功能技术分析 (27)4.10.3 替换功能实现过程 (28)4.11 设置字体功能设计与实现 (28)4.11.1 设置字体功能概述 (28)4.11.2 设置字体功能技术分析 (28)4.11.3 设置字体功能实现过程 (28)4.12 编译功能设计与实现 (29)4.12.1 编译功能概述 (29)4.12.2 编译功能技术设计 (29)4.12.3 编译功能实现过程 (30)4.13 运行功能设计与实现 (30)4.13.1 运行功能实现概述 (30)4.13.2 运行功能技术分析 (30)4.13.3 运行功能实现过程 (31)4.14 获取系统时间功能设计与实现 (31)4.15 复制功能设计与实现 (31)4.16 剪切功能设计与实现 (32)4.17 粘贴功能设计与实现 (32)4.18 帮助功能设计与实现 (32)4.19 小结 (33)5测试目的 (34)5.1测试目的 (34)5.2 功能测试 (34)5.3界面测试 (34)5.4 小结 (36)6 结束语 (37)6.1 总结 (37)6.2 展望 (37)附录 (38)参考文献 (40)致谢 (41)XX学校本科毕业设计1 绪论本章是论文的序言部分,将论述论文研究的背景、意义、研究现状以及论文要完成的工作。

《编辑源程序代码》PPT课件

《编辑源程序代码》PPT课件
③ Close at the new line with outer indentation 在下一行并向左 突出。
(6)Insert tabs插入制表符
是否用制表符实现缩进,若不用制表符,则用空格符实现缩 进。
(7)Save formatting options in source file 将格式化选择的参 数追加到源文件之后。
或按Alt +.(句点)。
(5)清除活动窗口中的所有书签
选择菜单Search→Bookmarks→Clear All Bookmarks或单击工具栏的按钮 即可。
5.3设置代码格式
文本编辑器可以设置AutoLISP代码的格式,使代码更易于阅 读。可以从多种不同格式的样式中挑选自己喜欢的格式。 1. 设置AutoLISP代码格式的对话框
Shift + PgUp 选取该字符开始到上一页该字符位置之后的所有字符
Ctrl + Shift + 选取该字符开始到该词结束的所有字符
Ctrl + Shift + 选取该字符开始到该词开始的所有字符
Ctrl + Shift + [ 选取该字符开始到与其匹配的左括号的所有字符
Ctrl + Shift + ] 选取字符开始到与其匹配的右括号的所有字符
有关查找文本对话框的说明如下: (1)Find What编辑框:用于输入要查找的字符串,如果在查找操作前选取 了文本,被选文本将会自动出现在Find What文本框内。
(2)Search栏:确定查找范围。该栏有四个互锁按钮。依次是: ● Current selection:在文本编辑器窗口中亮显的文本中查找; ● Current file:仅在活动编辑器窗口中的文件中查找; ● Project:在随后指定的工程文件所包含的全部文件中查找,并在新的输出窗口

文本编辑器源代码

文本编辑器源代码
}
catch (IOException ex) {
jlblStatus.setText("Error opening " + file.getName());
}
}
/** Save file with specified File instance */
jta.append(new String(b, 0, b.length));
in.close();
// Display the status of the Open file operation in jlblStatus
jlblStatus.setText(file.getName() + " Opened");
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==menuItem11)
open();
else if(e.getSource()==menuItem12)
save();
else if(e.getSource()==menuItem13)
JFileChooser.APPROVE_OPTION) {
save(jFileChooser1.getSelectedFile());
}
}
private void open(File file) {
try {
// Read from the specified file and store it in jta
menu2.add(menuItem22);
menuItem31=new JMenuItem("关于");

java源码编译

java源码编译

java源码编译Java源码编译是将Java代码转换为字节码的过程。

Java字节码是一种中间形式,它可以跨平台地运行在任何支持Java虚拟机(JVM)的计算机上。

Java源码可以使用命令行,集成开发环境(IDE)或构建工具进行编译。

下面是一些关于Java源码编译的指南:1.准备Java开发环境在编译Java源码之前,需要准备好Java开发环境。

Java开发环境包括Java Development Kit(JDK)和Java运行时环境(JRE)。

JDK提供了Java开发所需要的工具,包括Java编译器、Java文档生成器、调试器等等。

JRE包含Java虚拟机和Java类库等组件,是运行Java程序所必需的。

使用文本编辑器(如Notepad++、Sublime Text等)或集成开发环境(如Eclipse、NetBeans、IntelliJ IDEA等)创建Java源代码。

Java源代码必须以“.java”为扩展名,包含类、方法、变量等语法元素。

例如,以下是一个简单的Java类:编译Java源代码需要使用Java编译器。

Java编译器可以从命令行或集成开发环境中调用。

使用命令行编译Java源代码的命令为“javac”,命令格式如下:```javac [options] [source files]```其中,[options]是可选的编译选项,[source files]是要编译的Java源代码文件。

例如,以下命令可以编译上述的HelloWorld类:```javac HelloWorld.java```编译后会生成一个名为“HelloWorld.class”的字节码文件,该文件包含了相应源代码的Java字节码。

可以使用以下命令运行生成的字节码文件:4.优化编译过程Java编译器提供了一些编译选项,可以优化编译过程。

其中,最常用的选项为“-O”(优化)和“-g”(生成调试信息)。

5.使用构建工具使用构建工具可以更加方便地管理和构建Java项目。

编辑器使用Java语言和JavaFX开发的小程序

编辑器使用Java语言和JavaFX开发的小程序

编辑器使用Java语言和JavaFX开发的小程序随着计算机技术的不断发展,各种各样的应用程序层出不穷。

其中,编辑器是一类非常重要的应用程序,它可以方便地编辑文本、代码等内容。

本文将介绍使用Java语言和JavaFX开发的小程序,该程序旨在提供一个功能强大、易于使用的编辑器。

1. 程序概述该小程序基于Java语言和JavaFX开发,旨在为用户提供一个强大的文本编辑器。

它具有以下主要特点:1.1 支持多种文件类型该编辑器可以处理多种文件类型,包括普通文本文件、代码文件等。

用户可以根据自己的需要选择不同的文件类型,并获得相应的编辑功能。

1.2 语法高亮为了方便用户编写代码,该编辑器实现了语法高亮功能。

它可以根据不同的编程语言,对代码进行高亮显示,使代码结构更加清晰,易于阅读和修改。

1.3 智能代码补全为了提高用户的编程效率,该编辑器还实现了智能代码补全功能。

当用户输入代码时,编辑器可以自动弹出建议,并提供相关的代码片段,减少用户的输入量,提高编程效率。

1.4 代码格式化为了保持代码的规范和一致性,该编辑器提供了代码格式化功能。

用户可以通过点击按钮或使用快捷键,对代码进行格式化,使代码的缩进、空格等方面符合编码规范。

1.5 文件管理除了编辑功能,该编辑器还提供了文件管理功能。

用户可以通过编辑器直接打开、保存和关闭文件,还可以创建、删除和重命名文件。

这样,用户可以方便地管理自己的文档和代码文件。

2. 开发环境该小程序使用Java语言和JavaFX框架进行开发。

Java是一种跨平台的编程语言,可在不同的操作系统上运行。

JavaFX是一种用于构建富客户端应用程序的Java库,可以创建漂亮的用户界面。

为了开发该程序,你需要安装Java开发工具包(JDK)和JavaFX 库。

在准备好开发环境后,你可以使用Java编程语言和JavaFX的相关API来编写程序代码。

3. 实现过程3.1 创建界面首先,我们需要创建一个用户界面,用于展示编辑器的各个功能。

空闲时间无聊写的一个软著源代码文档生成器

空闲时间无聊写的一个软著源代码文档生成器

空闲时间⽆聊写的⼀个软著源代码⽂档⽣成器⼀个java版本扫描源代码⽣成软著⽂档⼩项⽬个⼈开发环境java环境:Jdk1.8.0_60编译器:IntelliJ IDEA 2019.1框架:Freemaker + Jacob + Java8docUtils v1.2扫描源代码⽣成docx⽂档 v1.2版本,每⼀份3000⾏ 60页宋体五号 .docx源代码⽣成流程1、递归扫描指定源代码2、通过将已经做好的docx模板,另存为xml⽂件,并修改xml⽂件为.ftl后缀的(freemaker)模板⽂件,(具体可以搜索freemaker⽣成word模板的⽅法)3、将扫描的源代码填充⾄ftl模板⽂件,⽣成为doc源代码⽂档(本质其实还是xml⽂件,平均⼀份⼤约1.5M)4、为了解决⽂档太⼤问题,采⽤jacob将doc(本质xml)转成docx后缀⽂件,最终⽂档⼀份50K左右源代码docUtils.java/*** 软著⽂档导出导出docx⽂档 3000⾏源代码 v1.2*/public class docUtils {// 扫描的源代码public static String PROJECT_URL = "D:\\javaDemo1\\text-boot";// ⽂档输出路径public static String OUT_PATH = "D:\\doc\\";public static void main(String[] args) throws IOException {File f = new File(PROJECT_URL);List<File> fileList = coreUtils.getFiles(f);long lines = 1;long count = 1;Map<String, Object> dataMap = new HashMap<String, Object>();for (int i = 0; i < fileList.size(); i++) {File item = fileList.get(i);List<String> contentList = FileUtils.readLines(item, "UTF-8");for (String content : contentList) {// 替换xml⽆法识别的特殊字符content = content.trim().replaceAll("<", "").replaceAll(">", "").replaceAll("&", "");// 保证每⼀个模板字符不超过第⼆⾏if (content.length() > 65) {content = content.substring(0, 65);}// 跳过空⾏if (content.length() == 0) {continue;}// 跳过功能注释跳过版权注释if (content.contains("/") || content.contains("*")) {continue;}// 填充模板字符串从 content1~content3000 保证每个模板3000⾏代码dataMap.put("content" + lines, content);if (dataMap.size() == 3000) {// ⽣产doccoreUtils.genDoc(dataMap, OUT_PATH);System.out.println("⽣成第" + count + "份⽂档");// 清理数据⽣成下⼀份dataMap.clear();count++;lines = 1;break;}lines++;}}System.out.println("⽂档已⽣成完成");System.out.println("⽂档已⽣成完成");}}coreUtils.javapublic class coreUtils {/*** docx 格式*/private static final int DOCX_FMT = 12;public static List<File> fileList = new ArrayList<File>();/** 通过递归得到某⼀路径下所有的⽬录及其⽂件*/public static List<File> getFiles(File root) {File[] files = root.listFiles();for (File file : files) {if (file.exists() && file.isDirectory()) {getFiles(file);} else {String filename = file.getName();String suffix = filename.substring(stIndexOf(".") + 1);if (suffix.equals("java")) {fileList.add(file);System.out.println("addFile " + file);} else {System.out.println("notFile " + file);}}}return fileList;}public static void genDoc(Map<String, Object> dataMap, String outPath) {// Map<String, Object> dataMap = new HashMap<String, Object>();try {// Configuration ⽤于读取ftl⽂件Configuration configuration = new Configuration(new Version("2.3.0"));configuration.setDefaultEncoding("UTF-8");/*** 以下是两种指定ftl⽂件所在⽬录路径的⽅式,注意这两种⽅式都是指定ftl⽂件所在⽬录的路径,⽽不是ftl⽂件的路径 */// 指定路径的第⼀种⽅式(根据某个类的相对路径指定)configuration.setClassForTemplateLoading(coreUtils.class, "/");// 指定路径的第⼆种⽅式,我的路径是C:/a.ftl// configuration.setDirectoryForTemplateLoading(new File("D:/"));long name = System.currentTimeMillis();// 输出⽂档路径及名称String filePath1 = outPath + name + ".doc";String filePath2 = outPath + name + ".docx";File outFile = new File(filePath1);// 以UTF-8的编码读取ftl⽂件Template template = configuration.getTemplate("tpl.ftl", "UTF-8");Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8"));template.process(dataMap, out);out.close();// 将doc⽂档转换成docxcoreUtils.convertDocxFmt(filePath1, filePath2, 1);outFile.delete();} catch (Exception e) {e.printStackTrace();}}/*** 根据格式类型转换 com.yociyy.rz.text.word ⽂件** @param srcPath 源⽂件* @param descPath ⽬标⽂件* @param fmt 所转格式*/public static void convertDocxFmt(String srcPath, String descPath, int fmt) throws Exception {public static void convertDocxFmt(String srcPath, String descPath, int fmt) throws Exception {File file = new File(srcPath);// 实例化ComThread线程与ActiveXComponentComThread.InitSTA();ActiveXComponent app = new ActiveXComponent("Word.Application");try {// ⽂档隐藏时进⾏应⽤操作app.setProperty("Visible", new Variant(false));// 实例化模板Document对象Dispatch document = app.getProperty("Documents").toDispatch();// 打开Document进⾏另存为操作Dispatch doc = Dispatch.invoke(document,"Open",Dispatch.Method,new Object[] { file.getAbsolutePath(), new Variant(false),new Variant(true) },new int[1]).toDispatch();Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {descPath, new Variant(DOCX_FMT) }, new int[1]);Dispatch.call(doc, "Close", new Variant(false));// return new File(descPath);} catch (Exception e) {throw e;} finally {// 释放线程与ActiveXComponentapp.invoke("Quit", new Variant[] {});ComThread.Release();}}}pom.xml<dependencies><!--Apache Commons--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.6</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency><dependency><groupId>net.sf.jacob-project</groupId><artifactId>jacob</artifactId><version>1.14.3</version></dependency></dependencies>使⽤⽅式(两步)第⼀步:(也可直接搜索jacob安装⽅式/使⽤⽅式)(jacob,是个强依赖的项⽬,需要将我放在项⽬resource 的jacob-1.14.3-x64_.rar解压,jacob-1.14.3-x64.dll放到本地安装jdk bin⽬录下即可)第⼆步 v1.0版本⼀样,修改⽬录,直接启动项⽬第三步查看⽣成结果txtUtils v1.0扫描源代码⽣成txt⽂档 v1.0版本,每⼀份⼤约3000⾏ 60页左右直接修改路径,启动main⽅法即可使⽤⽅式源代码/*** 软著⽂档导出导出txt⽂档⼤约3000⾏源代码 v1.0*/public class txtUtils {// 扫描的源代码public static String PROJECT_URL = "D:\\javaDemo1\\text-boot";// ⽂档输出路径public static String OUT_PATH = "D:\\doc\\";public static void main(String[] args) throws IOException {File f = new File(PROJECT_URL);List<File> fileList = coreUtils.getFiles(f);long leftLines = 0;StringBuffer sb = new StringBuffer();for (int i = 0; i < fileList.size(); i++) {File item = fileList.get(i);List<String> contentList = FileUtils.readLines(item, "UTF-8");for (String content : contentList) {if (content.length() == 0) {continue;}// 跳过功能注释跳过版权注释if (content.contains("/") || content.contains("*")) {continue;}// 2950⾏⼤约3000页if (leftLines > 2950) {FileUtils.write(new File(OUT_PATH + System.currentTimeMillis() + ".txt"), sb.toString(), "UTF-8"); leftLines = 0;sb.setLength(0);break;}sb.append(content);sb.append("\n");leftLines++;}}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JMenuItem save=new JMenuItem("保存 ");
JMenuItem lsave=new JMenuItem("另存为");
JMenuItem tui=new JMenuItem("退出");
JMenuItem cut=new JMenuItem("剪切 ");
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
public class TxtEditor extends JFrame implements ActionListener{
JMenuItem c=new JMenuItem("斜体");
TxtEditor(){
super ("文本编辑器 By 强凯 V1.0");
//小小对话框
setBounds(250,100,700,450);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
deletefile();
}
else if(e.getSource()==a){
afile();
}
else if(e.getSource()==b){
bfile();
}
else if(e.getSource()==c){
open.addActionListener(this);
save.addActionListener(this);
lsave.addActionListener(this);
tui.addActionListener(this);
cut.addActionListener(this);
df.setVisible(true);
//建立新文件
File f = new File( df.getDirectory()+df.getFile() );
//得到文件名
fileName = df.getDirectory()+df.getFile();
BufferedReader bw = new BufferedReader( new FileReader(f) );
bw.read(ch);
bw.close();
openfile();
}
else if(e.getSource()==save){
savefile();
}
else if(e.getSource()==lsave){
lsavefile();
}
else if(e.getSource()==cut){
cfile();
}
else if("退出".equals(actionCommand))
System.exit(0);
}
}
// 方法定义
public void newfile(){
savefile();
optionsMenu.add(a);
optionsMenu.add(b);
optionsMenu.add(c);
cai.add(geshi);
//增加监听器
xin.addActionListener(this);
else
{
return;
}
}
});
//热键设置
xin.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,ActionEvent.CTRL_MASK));
b.addActionListener(this);
c.addActionListener(this);
// 文本框锁定
//this.setResizable(false);
}
//重写方法
public void actionPerformed(ActionEvent e){
JMenuItem copy=new JMenuItem("复制");
JMenuItem cast=new JMenuItem("粘贴");
JMenuItem delete=new JMenuItem("删除 ");
JMenuItem b=new JMenuItem("粗体");
wen.setFont(new Font("楷体" , Font.PLAIN ,20));
// wen.setBackground(Color.blue);
// add(x);
//菜单栏的创建
JMenuBar cai=neme;
String file_dir;
String tempString;
//上次保存后的文件名和地址
String fileName = "";
JPanel x=new JPanel();
JTextArea wen=new JTextArea(20,50);
//用此文件的长度建立一个字符数组 (特别标注)
char ch[] = new char [(int)f.length()];
//异常处理
try
{
//读出数据,并存入字符数组ch中
JMenuItem ziti=new JMenuItem("字体");
JMenuItem a=new JMenuItem("普通");
//定义菜单项
JMenuItem xin=new JMenuItem("新建");
JMenuItem open=new JMenuItem("打开");
String actionCommand=e.getActionCommand();
if(e.getSource()instanceof JMenu);
{
if(e.getSource()==xin){
newfile();
}
else if(e.getSource()==open){
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,ActionEvent.CTRL_MASK));
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,ActionEvent.CTRL_MASK));
copy.addActionListener(this);
cast.addActionListener(this);
delete.addActionListener(this);
ziti.addActionListener(this);
a.addActionListener(this);
jian.addSeparator( );
jian.add(tui);
cai.add(jian);
JMenu bian= new JMenu("编辑 ");
bian.add(cut);
bian.add(copy);
bian.add(cast);
if(option==JOptionPane.YES_OPTION)
if(e.getWindow() == TxtEditor.this)
{
System.exit(0);
}
cutfile();
}
else if(e.getSource()==copy){
copyfile();
}
else if(e.getSource()==cast){
castfile();
}
else if(e.getSource()==delete){
bian.add(delete);
cai.add(bian);
JMenu geshi = new JMenu ("格式");
JMenu optionsMenu=new JMenu("字体");
geshi.add(optionsMenu);
this.setJMenuBar(cai);
cai.setOpaque(true);
JMenu jian=new JMenu("文件");
jian.add(xin);
jian.add(open);
jian.add(save);
jian.add(lsave);
wen.setText(null);
fileName = "";
}
//打开
public void openfile(){
String fileName = null;
FileDialog df = new FileDialog(this,"打开文件",FileDialog.LOAD);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e) {
int option= JOptionPane.showConfirmDialog(
TxtEditor.this, "你真的想退出吗... ", "系统和你对话 ",JOptionPane.YES_NO_OPTION);
相关文档
最新文档