java菜单编辑
- 格式:doc
- 大小:25.00 KB
- 文档页数:2
代码编辑器的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用来显示代码编辑器的相关的信息。
实践——为窗口添加菜单条和工具条步骤1:新建工程,以自己的学号命名:如。
在建好的java project里,新建可视化类mainFrame,继承自swing包中的JFrame类,窗口自带内容面板名称为“jContentPane”,将窗口的标题改为“主窗体”,修改窗口的属性,将“visiable”属性改为“true”;步骤2:修改jContentPane,将其“layout”属性改为“null”;步骤3:下面开始制作菜单,打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单条,在“swing menus”页中选中JMenuBar,单击拖动到“mainFrame”,将其命名为“jJMenuBar”;注意:也可以在“java beans”页面,选中“this-“主窗体”,再进行拖动。
步骤4:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单,在“swing menus”页中选中JMenu,单击拖动到“jJMenuBar”,将其命名为“jMenu1”;修改“jMenu1”的“text”属性为“文件”。
步骤5:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加菜单项,在“swing menus”页中选中JMenuItem,单击拖动到“jMenu1”,将其命名为“jMenuItem1”;修改“jMenuItem1”的“text”属性为“新建”。
步骤6:重复步骤5的操作,新建菜单项“jMenuItem2”;修改“jMenuItem2”的“text”属性为“保存”。
步骤7:重复步骤5的操作,新建菜单项“jMenuItem3”;修改“jMenuItem3”的“text”属性为“退出”。
步骤8:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加工具栏,在“swing menus”页中选中JToolBar,单击拖动到“jContentPane”,将其命名为“jJToolBarBar”;在可视化编辑区合理调整工具条的大小;步骤9:打开可视化编辑区域右侧浮动的组件面板“Palette”,添加工具栏里面的按钮,在“Swing Components”页中选中JButton,单击拖动到“jJToolBarBar”,将其命名为“jButton1”;修改“jButton1”的“icon”属性,给按钮添加一幅图片;可以从工程目录里添加,也可以从本地硬盘的某个位置添加;步骤10:重复步骤9,再给工具条添加一个按钮;步骤11:给菜单项“退出”添加事件处理代码;在Eclipse工作台的左下角“java bean”页面中选中“退出”菜单项,单击右键,在弹出的快捷菜单中选中“Event”,在弹出的二级菜单中选中“action performed”单击,此时编译环境自动生成了“退出”菜单项的动作事件处理代码框架如下:jMenuItem2.addActionListener(new java.awt.event.ActionListener() {public void actionPerformed(java.awt.event.ActionEvent e) {System.out.println("actionPerformed()"); // TODO Auto-generated Event stub actionPerformed()}});在方法体里添加如下:System.exit(0);步骤12:重复步骤11,也可以给工具栏中的某个按钮添加事件处理。
Java IDE编辑器IntelliJ IDEA使用基础篇先废话几句,大凡是Java开发者都知道Eclipse集成开发编辑器,也都会使用。
但IntelliJ IDEA呢?!我估计,一部分人没听说过,一部分人知道但没有用过。
所以,我在这里写一篇怎么使用IDEA来建立一个Java Web项目。
废话完毕!以下为图文并茂具体内容:我是首先在D盘下创建一个名叫ideademo的文件夹,准备把项目放在这个目录。
哥们,你也跟着造一个吧!打开你的IDEA编辑器,选择菜单栏的第一个菜单File-->New Project,如下图:然后,就是点击按钮Next>如上图,Project files location选择项目文件的位置,就选择刚建立的文件夹ideademo,给项目起个名字叫ideaProject填到Name所在的选项框里,另外Project file fortmat选项我选的是.ipr(file based)选项。
接着,继续下一步,如图:上面这个图所说的是,建立项目源文件目录为src,没别的继续下一步,如下图:记得在左侧复选框里选上Web Application那个勾,因为要开发Java Web项目是必要的,他会给你生成web.xml文件,右边可以选择JavaEE版本,我选择Version:2.5,点击Finish就完了,剩下的是让项目运行起来了!注意:中途如果要你选择JDK,你就选择一下你的JDK安装目录。
下图是建立后的项目结构图:下一步,设置一下项目的编码吧,免得以后文件内容乱码,全给设置个utf-8编码!在编辑里点击上图菜单栏Build下面那个扳手图标,出现下图:在上图左边的框中输入encoding,然后在右边四个选项中全部选择UTF-8,点击按钮OK设置完成!接着点击编辑器中,菜单栏Run下面那个按钮,如下图:选择左侧的选项为Modules,接着选择右侧Paths选项卡,Compiler output,选择Use module compile output path选项,接着点击选项右边浏览按钮继续设置此选项的地址,如下图:因为IDEA工具默认没有给你新建classes目录,所以你设置的时候,点击WEB-INF目录,再点击的新建按钮新建classes目录,点击OK完成。
java JMenu菜单在一个窗口中,经常需要给窗口添加菜单条。
在Java中这一部分是由JMenuBar、JMenu和JMenuItem三个类实现的,分别对应菜单条、菜单和菜单项。
1.菜单栏(JMenuBar)创建菜单栏是制作菜单的第一步,并JMenuBar的构造方法相当简单,如通过“JMenuBar TestJMenuBar=new JMenuBar();”语句即可创建。
而在设置菜单栏时,可以通过表9-22所示的常用方法。
需要说明的是,JMenuBar类根据JMenu添加的顺序从左到右显示,并建立整数索引。
2.菜单(JMenu)在添加完菜单栏后,并不会显示任何菜单内容,所以还需要在菜单栏中添加菜单内容。
菜单内容的JMenu类的构造方法有4种:●JMenu( ) 构造一个空菜单。
●JMenu(Action a) 构造一个菜单,菜单属性由相应的动作来提供。
●JMenu(String s) 用给定的标志构造一个菜单。
●JMenu(String s,Boolean b) 构造一个新JMenu,用提供的字符串作为其文本并指定其是否为分离式(tear-off)菜单。
在构造完后,使用JMenuBar类的add方法添加到菜单栏中。
而JMenu的常用方法如表9-23所示。
3.菜单项(JMenuItem)在菜单中可以添加不同的内容,可以是菜单项(JMenuItem),可以是一个子菜单,也可以是分隔符。
子菜单的添加是直接将一个子菜单添加到母菜单中,而分隔符的添加只需要将分隔符作为菜单项添加到菜单中。
菜单的该实现是一个包含JMenuItem的弹出窗口,用户选择JMenuBar上的项时会显示该JMenuItem。
除JMenuItem之外,JMenu还可以包含JSeparator。
其菜单项的构建方法如下:●JMenuItem() 创建不带有设置文本或图标的JMenuItem。
●JMenuItem(Action a) 创建从指定的Action获取其属性的菜单项。
《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)界面设计2)功能实现(1)文件菜单:新建、打开、保存、另存为、退出等。
(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计1)功能模块图:图一功能模块图2)功能描述1、打开记事本。
首先是标准型的记事本,拥有文件、编辑。
格式和帮助。
如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。
如图2记事本文件帮助新建打开保存另存为退出复制剪切粘贴编辑关于记事本右键快捷格式字体颜色图2新建记事本功能3、用打开文件打开刚刚新建的新记事本。
如图三所示。
图3—打开文件4、点击退出即可退出,如图4所示:图4—退出记事本5、点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。
如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。
如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。
如图7:图7—编辑八、程序清单package test;import java.io.File;import java.io.*;import java.awt.event.*;import java.awt.Toolkit;import java.awt.*;import javax.swing.*;import javax.swing.filechooser.*;public class Notebook extends JFrame implements ActionListener,ItemListener{ //组件创建JButton b_save,b_close; //按钮JTextArea textArea; //文本框File tempFile; //文件JPanel jp; //面板JMenu file,edit,style,help; //菜单JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy, e_paste,e_cut,e_clear,e_selectAll,e_find,e_rep lace,s_font,s_color,h_editor,h_help; //菜单条JMenuBar jmb;JScrollPane jsp; //滚动面板JPopupMenu popUpMenu = new JPopupMenu(); //右键弹出式菜单JLabel stateBar;//标签JLabel jl,jj;JFileChooser jfc = new JFileChooser(); //文件选择JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je _find,je_replace; //弹出式菜单条public Notebook(){jfc.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(*.txt)","txt"));jmb = new JMenuBar();textArea = new JTextArea();jsp = new JScrollPane(textArea);file = new JMenu("文件");edit = new JMenu("编辑");style = new JMenu("格式");help = new JMenu("帮助");je_copy = new JMenuItem("复制(C) ");je_paste = new JMenuItem("粘贴(P) ");je_cut = new JMenuItem("剪切(X) ");je_clear = new JMenuItem("清除(D) ");je_selectAll = new JMenuItem("全选(A) ");je_find = new JMenuItem("查找(F) ");je_replace = new JMenuItem("替换(R) ");je_copy.addActionListener(this); //给弹窗式的各组件添加监听器je_paste.addActionListener(this);je_cut.addActionListener(this);je_clear.addActionListener(this);je_selectAll.addActionListener(this);je_find.addActionListener(this);je_replace.addActionListener(this);//给界面上方的菜单条添加监听器f_new = new JMenuItem("新建(N)");f_new.setAccelerator(KeyStroke.getKeyS troke('N',InputEvent.CTRL_MASK,false)); //设置带修饰符快捷键f_new.addActionListener(this);f_open = new JMenuItem("打开(O)");f_open.setAccelerator(KeyStroke.getKey Stroke('O',InputEvent.CTRL_MASK,false));f_open.addActionListener(this);f_save = new JMenuItem("保存(S)");f_save.setAccelerator(KeyStroke.getKey Stroke('S',InputEvent.CTRL_MASK,false));f_save.addActionListener(this);f_saveas = new JMenuItem("另存为");f_saveas.setAccelerator(KeyStroke.getKe yStroke(KeyEvent.VK_S,InputEvent.CTRL_ MASK|InputEvent.SHIFT_MASK));f_saveas.addActionListener(this);f_close = new JMenuItem("退出(W)");f_close.setAccelerator(KeyStroke.getKey Stroke('W',InputEvent.CTRL_MASK,false));f_close.addActionListener(this);e_copy = new JMenuItem("复制(C)");e_copy.setAccelerator(KeyStroke.getKey Stroke('C',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_paste = new JMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStro ke('V',InputEvent.CTRL_MASK,false));e_paste.addActionListener(this);e_cut = new JMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke ('X',InputEvent.CTRL_MASK,false));e_cut.addActionListener(this);e_clear = new JMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStrok e('D',InputEvent.CTRL_MASK,false));e_clear.addActionListener(this);e_selectAll = new JMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKey Stroke('A',InputEvent.CTRL_MASK,false));e_selectAll.addActionListener(this);e_find = new JMenuItem("查找(F)");e_find.setAccelerator(KeyStroke.getKeyStrok e('F',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_replace = new JMenuItem("替换(R)");e_replace.setAccelerator(KeyStroke.getK eyStroke('R',InputEvent.CTRL_MASK,false)) ;e_replace.addActionListener(this);s_font = new JMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStrok e('T',InputEvent.CTRL_MASK,false));s_font.addActionListener(this);s_color = new JMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_C,InputEvent.CTRL_MAS K | InputEvent.SHIFT_MASK));s_color.addActionListener(this);h_editor = new JMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_E,InputEvent.CTRL_MAS K));h_editor.addActionListener(this);h_help = new JMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStrok e(KeyEvent.VK_I,InputEvent.CTRL_MASK) );h_help.addActionListener(this);//添加右键弹出式菜单popUpMenu.add(je_copy);popUpMenu.add(je_paste);popUpMenu.add(je_cut);popUpMenu.add(je_clear);popUpMenu.addSeparator();popUpMenu.add(je_selectAll);popUpMenu.add(je_find);popUpMenu.add(je_replace);//编辑区鼠标事件,点击右键弹出"编辑"菜单textArea.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(), e.getX(), e.getY());} //e.getComponent()和textArea具有同等效果public void mouseClicked(MouseEvent e){if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});this.setJMenuBar(jmb);this.setTitle("记事本程序");file.add(f_new); //添加文件菜单组件file.add(f_open);file.addSeparator(); //加分隔线file.add(f_save);file.add(f_saveas);file.addSeparator();file.add(f_close);edit.add(e_copy); //添加编辑菜单组件edit.add(e_paste);edit.add(e_cut);edit.add(e_clear);edit.addSeparator();edit.add(e_selectAll);edit.add(e_find);edit.add(e_replace);style.addSeparator();style.add(s_font);style.add(s_color);jmb.add(file); //添加格式菜单组件jmb.add(edit);jmb.add(style);jmb.add(help);help.add(h_editor); //添加帮助菜单组件help.add(h_help);//textArea.setWrapStyleWord(true); //设置在单词过长的时候是否要把长单词移到下一行。
EclipseJava编程入门教程Eclipse Java编程入门教程第一章:介绍Eclipse和Java编程Eclipse是一个广泛使用的集成开发环境(IDE),用于开发各种应用程序,尤其是Java应用程序。
Java是一种面向对象的编程语言,广泛应用于企业级应用开发和移动应用开发。
本章将介绍Eclipse的基本概念和Java编程的基础知识。
1.1 Eclipse的安装和配置要使用Eclipse进行Java编程,首先需要在官方网站上下载并安装Eclipse IDE。
安装完成后,打开Eclipse,配置Java开发环境。
这包括设置JDK路径、创建工作空间和配置Eclipse的界面。
1.2 创建Java项目在Eclipse中,可以通过“New Project”选项创建一个Java项目。
选择项目类型和命名,在项目目录下创建源文件夹和包。
这样就能开始编写Java代码了。
第二章:Eclipse编程基础了解了Eclipse的基本使用方法后,本章将重点介绍Java编程的基础知识,包括变量、数据类型、运算符、流程控制和函数等。
2.1 变量和数据类型Java是一种强类型语言,每个变量都必须先声明,然后才能使用。
变量可以存储不同类型的数据,例如整数、浮点数、字符和布尔值等。
本节将介绍Java的各种数据类型,以及如何声明和使用变量。
2.2 运算符和表达式Java提供了多种运算符,包括算术运算符、赋值运算符、比较运算符和逻辑运算符等。
通过运算符和表达式,可以进行各种数学计算和逻辑判断。
本节将详细介绍Java的运算符和表达式的使用方法。
2.3 流程控制流程控制是编程中的重要概念,用于控制程序的执行流程。
Java提供了多种流程控制语句,包括条件语句(if-else语句、switch语句)、循环语句(for循环、while循环)和跳转语句(break语句、continue语句)。
本节将介绍这些流程控制语句的使用方法。
2.4 函数和方法函数是一段封装了特定功能的代码块,可以重复使用。
Java 课程设计报告题目:文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计的目的与要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3二、综合设计正文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31. 系统分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31.1系统开发背景、开发范围、建设目标与必要性开发⋯⋯⋯⋯⋯⋯⋯⋯31.2需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.1功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.2系统运行环境与开发工具⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43 . 系统实施⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 3.1 源程序⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43.2 .系统测试及部分截图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12三、综合设计总结或结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13四、参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java 程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。
二、综合设计正文1系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
1.2需求分析程序设计主要分为两大部分:简单 GUI 设计和程序功能设计。
通过 GUI 设计实现图形用户界面,提供图形菜单,方便用户操作。
使用Java 语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出的程序。
最近在写聊天室...显示的文本框内容应该是不可以修改只能复制,但是JFC没有提供那种是否只可读的属性。
我从网上有看到有人写好了这种类,然后自己又添加了右键菜单出现复制、粘贴、剪切的功能摘自/mq612的源代码:import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JT extArea;import javax.swing.KeyStroke;import javax.swing.UIManager;/*** Java右键菜单实现文本组件内容的的复制、粘贴、剪切功能** @author 五斗米<如转载请保留作者和出处>* @blog/mq612*/public class Test extends JFrame {private static final long serialVersionUID = -5942087991012920147L;private JScrollPane pane = null;private TextAreaMenu text = null;public Test() {super("右键菜单");try { // 使用Windows的界面风格UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");} catch (Exception e) {e.printStackTrace();}text = new TextAreaMenu();pane = new JScrollPane(text);this.getContentPane().add(pane);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(300, 200);this.setVisible(true);}public static void main(String args[]) {new Test();}/*** 带有功能菜单的JT extArea** @author 五斗米<如转载请保留作者和出处>* @blog/mq612*/class TextAreaMenu extends JTextArea implements MouseListener { private static final long serialVersionUID = -2308615404205560110L;private JPopupMenu pop = null; // 弹出菜单private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单public TextAreaMenu() {super();init();}private void init() {this.addMouseListener(this);pop = new JPopupMenu();pop.add(copy = new JMenuItem("复制"));pop.add(paste = new JMenuItem("粘贴"));pop.add(cut = new JMenuItem("剪切"));copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK)); paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK)); cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK)); copy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});paste.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});cut.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});this.add(pop);}/*** 菜单动作* @param e*/public void action(ActionEvent e) {String str = e.getActionCommand();if (str.equals(copy.getText())) { // 复制this.copy();} else if (str.equals(paste.getText())) { // 粘贴this.paste();} else if (str.equals(cut.getText())) { // 剪切this.cut();}}public JPopupMenu getPop() {return pop;}public void setPop(JPopupMenu pop) {this.pop = pop;}/*** 剪切板中是否有文本数据可供粘贴** @return true为有文本数据*/public boolean isClipboardString() {boolean b = false;Clipboard clipboard = this.getToolkit().getSystemClipboard(); Transferable content = clipboard.getContents(this);try {if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {b = true;}} catch (Exception e) {}return b;}/*** 文本组件中是否具备复制的条件** @return true为具备*/public boolean isCanCopy() {boolean b = false;int start = this.getSelectionStart();int end = this.getSelectionEnd();if (start != end)b = true;return b;}public void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void mousePressed(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3) { copy.setEnabled(isCanCopy());paste.setEnabled(isClipboardString());cut.setEnabled(isCanCopy());pop.show(this, e.getX(), e.getY());}}public void mouseReleased(MouseEvent e) {}}}我修改后可实现右键单击菜单、只可复制不可修改的代码public class NoEditArea extends JT extArea implements MouseListener{//以下代码实现右键复制功能private static final long serialVersionUID = -2308615404205560110L;private JPopupMenu pop = null; // 弹出菜单private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单private void init() {this.addMouseListener(this);pop = new JPopupMenu();pop.add(copy = new JMenuItem("复制"));copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK)); copy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});this.add(pop);}public void action(ActionEvent e) {String str = e.getActionCommand();if (str.equals(copy.getT ext())) { // 复制this.copy();}}public JPopupMenu getPop() {return pop;}public void setPop(JPopupMenu pop) { this.pop = pop;}//文本组件是否具备复制的条件public boolean isCanCopy() {boolean b = false;int start = this.getSelectionStart();int end = this.getSelectionEnd();if (start != end)b = true;return b;}public void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) { }public void mouseExited(MouseEvent e) {}public void mousePressed(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3) {copy.setEnabled(isCanCopy());pop.show(this, e.getX(), e.getY());}}public void mouseReleased(MouseEvent e) {}//以下代码实现不可修改文本框内容public NoEditArea(/*String string,int rows,int columns*/){super(/*string,rows,columns*/);init();addKeyListener(new KeyAdapter(){public void keyTyped(KeyEvent key) {key.consume();}public void keyPressed(KeyEvent key) {JTextArea temp = (JTextArea)key.getSource();int caretPos = temp.getCaretPosition();switch(key.getKeyCode()){case(KeyEvent.VK_LEFT):case(KeyEvent.VK_BACK_SPACE):if(caretPos>0){temp.setCaretPosition(caretPos -1);}break;case(KeyEvent.VK_RIGHT):if(caretPos<temp.getText().length()){ temp.setCaretPosition( caretPos+1);}break;case(KeyEvent.VK_DELETE):System.out.println("aaa");break;default:break;}key.consume();}public void keyReleased(KeyEvent key) {key.consume();}});}}NoEditArea已经封装好,直接用就可以了如果是普通的JTextArea,实现右键复制、粘贴、剪贴功能public class EditArea extends JTextArea implements MouseListener{public EditArea(){super();init();}// 以下代码实现右键复制功能private static final long serialVersionUID = -2308615404205560110L;private JPopupMenu pop = null; // 弹出菜单private JMenuItem copy = null, paste = null, cut = null; // 三个功能菜单private void init() {this.addMouseListener(this);pop = new JPopupMenu();pop.add(copy = new JMenuItem("复制"));pop.add(paste = new JMenuItem("粘贴"));pop.add(cut = new JMenuItem("剪切"));copy.setAccelerator(KeyStroke.getKeyStroke('C', InputEvent.CTRL_MASK)); paste.setAccelerator(KeyStroke.getKeyStroke('V', InputEvent.CTRL_MASK)); cut.setAccelerator(KeyStroke.getKeyStroke('X', InputEvent.CTRL_MASK)); copy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});paste.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});cut.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {action(e);}});this.add(pop);public void action(ActionEvent e) {String str = e.getActionCommand();if (str.equals(copy.getT ext())) { // 复制this.copy();} else if (str.equals(paste.getText())) { // 粘贴this.paste();} else if (str.equals(cut.getText())) { // 剪切this.cut();}}public JPopupMenu getPop() {return pop;}public void setPop(JPopupMenu pop) {this.pop = pop;}//是否具备粘贴的条件public boolean isClipboardString() {boolean b = false;Clipboard clipboard = this.getT oolkit().getSystemClipboard(); Transferable content = clipboard.getContents(this);try {if (content.getTransferData(DataFlavor.stringFlavor) instanceof String) {b = true;}}catch(Exception e){return b;}//文本组件是否具备复制的条件public boolean isCanCopy() {boolean b = false;int start = this.getSelectionStart();int end = this.getSelectionEnd();if (start != end)b = true;return b;}public void mouseClicked(MouseEvent e) {}public void mouseEntered(MouseEvent e) { }public void mouseExited(MouseEvent e) { }public void mousePressed(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3) { copy.setEnabled(isCanCopy());paste.setEnabled(isClipboardString());cut.setEnabled(isCanCopy());pop.show(this, e.getX(), e.getY());}}public void mouseReleased(MouseEvent e) {}。
Java 添加、回复、修改(替换)、删除、读取Word批注批注是一种常用于对特定文档内容进行注解的工具或方法,起到解释说明、标记指正的作用。
在本篇文章中,将介绍如何操作Word批注的方法,包括:1. 添加批注:添加文本到批注、插入图片到批注;1.1 给指定段落添加批注1.2 给指定字符串添加批注2. 回复批注;3. 修改或替换批注:用文本替换批注中的文本内容、用文本替换批注中的图片、用图片替换批注中的图片;4. 删除批注:删除指定批注中的所有内容、删除指定批注中的指定内容5. 读取批注5.1 读取批注中的文本5.2 读取批注中的图片使用工具:Free Spire.Doc for Java (免费版)Jar文件获取及导入:方法1:通过官网获取jar包,并解压。
解压后,将lib文件夹下的Spire.Doc.jar文件导入java程序。
方法2:通过添加maven依赖导入到maven项目,参考导入步骤。
Java示例代码【示例1】给段落添加批注(文本、图片)import com.spire.doc.*;import com.spire.doc.documents.Paragraph;import ment;public class AddComment {public static void main(String[] args) {//加载测试文档Document doc = new Document("test.docx");//获取指定段落Section sec = doc.getSections().get(0);Paragraph para= sec.getParagraphs().get(3);//插入文本到批注Comment comment = para.appendComment("请在试验中将包含以下特征的实验样本记录在册,并整理好周记录报表,供后续观察取样。
//菜单
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class MenuTest {
private JFrame jf;
private JMenuBar bar;
private JMenu file ,edit,view,je;
private JMenuItem[][] items;
public MenuTest(){
jf = new JFrame("菜单测试v1.3");
bar=new JMenuBar();
file = new JMenu("文件");
edit = new JMenu("编辑");
view = new JMenu("视图");
je = new JMenu("简介");
items = new JMenuItem[4][];
additem();
}
public void additem(){
items[0]=new JMenuItem[5];
file.add(items[0][0] = new JMenuItem("新建"));
file.add(items[0][1] = new JMenuItem("打开"));
file.addSeparator();
file.add(items[0][2] = new JMenuItem("保存"));
file.add(items[0][3] = new JMenuItem("另存为"));
file.addSeparator();
file.add(items[0][4] = new JMenuItem("退出"));
items[1]=new JMenuItem[3];
edit.add(items[0][0] = new JMenuItem("查找"));
edit.add(items[0][1] = new JMenuItem("替换"));
edit.add(items[0][2] = new JMenuItem("复制"));
items[2]=new JMenuItem[2];
view.add(items[0][0] = new JMenuItem("字体"));
view.add(items[0][1] = new JMenuItem("颜色"));
items[3]=new JMenuItem[5];
je.add(items[0][0] = new JMenuItem("姓名"));
je.add(items[0][1] = new JMenuItem("年龄"));
je.add(items[0][2] = new JMenuItem("性别"));
je.add(items[0][3] = new JMenuItem("职务"));
je.add(items[0][4] = new JMenuItem("生日"));
bar.add(file);
bar.add(edit);
bar.add(view);
bar.add(je);
jf.setJMenuBar(bar);
}
public void showMe(){
jf.setSize(400,300);
//jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[]args){
new MenuTest().showMe();
}
}。