java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

这篇文字将要学习以下知识点:

1.如何给JButton按钮添加鼠标点击事件监听器

#1.addMouseListener(MouseListener l)  给JButton添加一个鼠标点击监听器l

2.文本区控件JTextArea 中的方法(剪切,复制,粘贴,删除,全选  功能的实现)

#1.cut()  先在文本区控件中选中一段文字,然后调用此方法就可以将文字#剪切#到剪贴板(效果和windows中的剪切一模一样)。

#2.copy() 先在文本区控件中选中一段文字,然后调用此方法就可以将文字#复制#到剪贴板(效果和windows中的剪切一模一样)。

#3.paste() 随便复制一段文字(例如从网页中),然后选中文本区,再调用此方法,就可以将刚才复制的文字复制到文本区中

#4.replaceSelection(String content) 先在文本区中选定一段文字,然后调用此方法就可以将选中的文字替换为content

#5.selectAll() 选中全部文字,和windows中的ctrl+a效果一样

1.如何给JButton按钮添加鼠标点击事件监听器

先弄一个这种样子的对话框出来

89abc3596d82ad35a702d3687f8d4f79.png

然后查看源码中的initialize()方法大概是这个样子的:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 private voidinitialize() {2 frame = newJFrame();3 frame.setBounds(100, 100, 450, 300);4 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);5 frame.getContentPane().setLayout(null);6

7 //创建一个显示文本为New button的按钮

8 JButton NewButton = new JButton("New button");9 //设置按钮的位置和长宽属性

10 NewButton.setBounds(28, 138, 117, 129);11 frame.getContentPane().add(NewButton);12 }

View Code

接下来给按钮NewButton添加一个鼠标点击事件监听器:在NewButton 上右键-Add event handler -mouse-mouseClicked 。完成之后NewButton的鼠标点击事件监听器就添加成功了

fe07649a611bbf6549d740c97a9035e1.png

然后查看源码,你会发现initialize()方法变成了大概这个样子:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 private voidinitialize() {2 frame = newJFrame();3 frame.setBounds(100, 100, 450, 300);4 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);5 frame.getContentPane().setLayout(null);6

7 //创建一个显示文本为New button的按钮

8 JButton NewButton = new JButton("New button");9

10 //给NewButton添加鼠标点击监听器

11 NewButton.addMouseListener(newMouseAdapter() {12 @Override13 public voidmouseClicked(MouseEvent e) {14 //当NewButton被点击时,mouseClicked()方法中的代码会被执行

15 }16 });17

18 //设置按钮的位置和长宽属性

19 NewButton.setBounds(28, 138, 117, 29);20 frame.getContentPane().add(NewButton);21 }

View Code

其中这一部分就是“鼠标点击监听器”。这里你也许会产生一个问题,使用new关键字的时候都是比如这样的:A a = new A();,为啥这里new MouseAdapter()以后还跟了一个大括号,大括号里面还有一个方法呢?这种叫做匿名内部类,也就是一个没有名字的类。彻底搞懂上面那一段代码需要先了解以下知识点:

1.抽象类

2.接口

3.匿名内部类

在《Java疯狂讲义》中有对应的章节,等你学完上面的3个板块以后我在出个上面代码解释的详细版本给你。这里你只要把它理解为一个“鼠标点击监听器”就好了。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 newMouseAdapter() {2 @Override3 public voidmouseClicked(MouseEvent e) {4 //当NewButton被点击时,mouseClicked()方法中的代码会被执行

5 }6 }

View Code

JButton通过它的addMouseListener()方法给自己添加了上面那个监听器。这个监听器的作用是:当鼠标点击这个按钮时:mouseClicked()方法中的代码会被执行。这就给了你机会,让你可以写自己的代码来响应点击事件。将mouseClicked()方法修改为:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 public voidmouseClicked(MouseEvent e) {2 //当NewButton被点击时,mouseClicked()方法中的代码会被执行

3 System.out.println("按钮被点击了!");4 }

View Code

当你点击按钮时,控制台就会输出:按钮被点击了!

2.文本区控件JTextArea 中的方法(剪切,复制,粘贴,删除,全选  等功能的实现)

下面这个程序中包含一个可输入的文本区+5个按钮。每个按钮都被添加了鼠标点击事件。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packageswing;2

3 importjava.awt.EventQueue;4

5 importjavax.swing.JFrame;6 importjavax.swing.JTextArea;7 importjavax.swing.JButton;8 importjava.awt.event.ActionListener;9 importjava.awt.event.ActionEvent;10 importjava.awt.event.MouseAdapter;11 importjava.awt.event.MouseEvent;12

13 public classMyEdit {14

15 privateJFrame frame;16 privateJTextArea textArea;17

18 /**

19 * Launch the application.20 */

21 public static voidmain(String[] args) {22 EventQueue.invokeLater(newRunnable() {23 public voidrun() {24 try{25 MyEdit window = newMyEdit();26 window.frame.setVisible(true);27 } catch(Exception e) {28 e.printStackTrace();29 }30 }31 });32 }33

34 /**

35 * Create the application.36 */

37 publicMyEdit() {38 initialize();39 }40

41 /**

42 * Initialize the contents of the frame.43 */

44 private voidinitialize() {45 frame = newJFrame();46 frame.setBounds(100, 100, 450, 300);47 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);48 frame.getContentPane().setLayout(null);49

50 //创建一个显示文本为New button的按钮

51 JButton cutButton = new JButton("剪切");52

53

54 //给NewButton添加鼠标点击监听器

55 cutButton.addMouseListener(newMouseAdapter() {56 @Override57 public voidmouseClicked(MouseEvent e) {58 //当NewButton被点击时,mouseClicked()方法中的代码会被执行

59

60 }61 });62

63 //设置按钮的位置和长宽属性

64 cutButton.setBounds(6, 121, 117, 29);65 frame.getContentPane().add(cutButton);66

67

68 textArea = newJTextArea();69 textArea.setBounds(6, 6, 425, 81);70 frame.getContentPane().add(textArea);71

72 //复制按钮

73 JButton copyButton = new JButton("复制");74 copyButton.addMouseListener(newMouseAdapter() {75 @Override76 public voidmouseClicked(MouseEvent e) {77 textArea.copy();78 }79 });80 copyButton.setBounds(6, 163, 117, 29);81 frame.getContentPane().add(copyButton);82

83 //粘贴按钮

84 JButton pasteButton = new JButton("粘贴");85 pasteButton.addMouseListener(newMouseAdapter() {86 @Override87 public voidmouseClicked(MouseEvent e) {88 textArea.paste();89 }90 });91 pasteButton.setBounds(6, 204, 117, 29);92 frame.getContentPane().add(pasteButton);93

94 //删除按钮

95 JButton deleteButton = new JButton("删除");96 deleteButton.addMouseListener(newMouseAdapter() {97 @Override98 public voidmouseClicked(MouseEvent e) {99 //将选中的文字删除掉。请ctrl+单击replaceSelection()方法,查看方法使用详情

100 textArea.replaceSelection(null);101 }102 });103 deleteButton.setBounds(154, 121, 117, 29);104 frame.getContentPane().add(deleteButton);105

106 //全选按钮

107 JButton selectAllButton = new JButton("全选");108 selectAllButton.addMouseListener(newMouseAdapter() {109 @Override110 public voidmouseClicked(MouseEvent e) {111 textArea.selectAll();112 }113 });114 selectAllButton.setBounds(154, 163, 117, 29);115 frame.getContentPane().add(selectAllButton);116 }117 }

View Code

剪切按钮:选中文本中输入的一段问题,然后单击此按钮,选中的文字就被复制到了剪贴板

复制按钮:和剪切按钮类似

粘贴按钮:随便在网页上复制一段文字,然后选中文本区,然后按粘贴按钮,在网页上复制的文字就被粘贴到文本区中了

删除按钮:选中文本区中的一段文字,然后点击此按钮,选中的文字就被删除了

全选按钮:点击此按钮,文本区中的所有文字就会被选中

那个记事本程序中的剪切,复制,粘贴,删除,全选功能就是上面那样实现的。把上面的代码看懂以后,就又懂了20%咯。

作业:

1.设计一个程序,要求:包含2个按钮A B,一开始点击B按钮什么反应都没有,然后点击A按钮之后再来点击B按钮,让控制台输出:“嘻嘻嘻嘻”。

2.设计一个程序,要求:

1.包含3个按钮A B C

2.A按钮点击后能给B按钮设置一个鼠标点击监听器,让B按钮被点击后输出“AAAA”

3.C按钮点击后能给B按钮设置一个鼠标点击监听器,让B按钮被点击后输出“CCCC”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习进度条07

第八周所花时间28小时代码量 50博客量7篇了解到的知识点 java中swing控件可以用来设置图形化界面,让界面更加好看; 可以引用相关的包和类,来改变图形化的界面,让界面更加美观。 转载于:https://www.cnblogs.com/Daddy/p/5427670.h…

迭代器(Iterator)遍历的两种方法(for和while)

一般遍历list的时候&#xff0c;我们习惯下面的写法,但这种写法有缺陷&#xff0c;不能及时释放iterator的内存 while循环遍历 Test public void testIteratorWhile(){ArrayList<String> lists new ArrayList<>();lists.add("A");lists.add("B&…

硬件:断路器、接触器、继电器基础知识

在电力系统中&#xff0c;断路器、接触器、继电器似乎都是耳熟能详的家伙&#xff0c;但很多一知半解的&#xff0c;却也搞不清这些东西究竟有什么不同&#xff0c;又有什么联系&#xff0c;今天我们就一起讲一讲。 首先说相同的吧&#xff01; 当然&#xff0c;无可非议的&…

java pem,如何验证Java中的PEM格式证书

I have PEM format file, How can verify the signature in Java, as I followed http://download.oracle.com/javase/tutorial/security/apisign/versig.html but found that Java doesnt support PEM解决方案You can read a certificate in a PEM file using BouncyCastles P…

PDU与SDU理解

惯例&#xff1a;首先标注定义&#xff0c;而后是形象的解释。 PDU(Protocol Data Unit)协议数据单元 SDU(service data unit)服务数据单元 什么是协议数据单元&#xff1f;就是按照协议的要求来传输的数据。什么是服务数据单元呢&#xff1f;就是指传输的数据。 这里有个例子&…

Collection和Collections区别

1.Collection: 是集合类的上层接口。本身是一个Interface&#xff0c;里面包含了一些集合的基本操作。 Collection接口是Set接口和List接口的父接口 Collection接口的方法 2.Collections Collections是一个集合框架的帮助类&#xff0c;里面包含一些对集合的排序&#xff0c;…

程序员效率:整理常用的在线笔记软件

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

修饰符总结

面试的时候&#xff0c;如果有笔试就会有一个笔试题就是&#xff1a;private&#xff0c;protected&#xff0c;public&#xff0c;internal的区别&#xff1f; 那么我每次都是简单的写下。今天具体的来总结下。 public &#xff1a;公共的。很好理解&#xff0c;就是所有人都可…

怎么确保一个集合不能被修改?

我们很容易想到用final关键字进行修饰&#xff0c;我们都知道final关键字可以修饰类&#xff0c;方法&#xff0c;成员变量&#xff0c;final修饰的类不能被继承&#xff0c;final修饰的方法不能被重写&#xff0c;final修饰的成员变量必须初始化值&#xff0c;如果这个成员变量…

程序员如何与人打交道

作为程序员&#xff0c;人际关系也是必备的技能之一&#xff0c;本篇文章给大家介绍一下作为程序员处理人际关系需要注意的因素。1、每个人都希望自己被重视当你和他人沟通交流的时候&#xff0c;每个人都希望自己被重视&#xff0c;因为每个人都有自己的想法和观点&#xff0c…

BZOJ_1798__Codevs_2216_[AHOI_2009]_行星序列_(线段树)

描述 BZOJ: http://www.lydsy.com/JudgeOnline/problem.php?id1798 Codevs: http://codevs.cn/problem/2216/ 给出n和行星的质量,进行m次操作: 1.将[l,r]区间内所有行星质量*c. 2.将[l,r]区间内所有行星质量c. 3.询问[l,r]区间内行星质量和. 分析 双标记线段树,多加一个乘法的…

Java中三种Set的实现类的用法和区别

Java为开发者提供了大量的工具类&#xff0c;这给开发人员带来了很大方便&#xff0c;但是选择多了也有困扰&#xff0c;究竟用哪个类&#xff1b;我想选择什么&#xff0c;一是看自己具体需求&#xff0c;二是类本身的性能和用法&#xff1b;Java中提供了HashSet、TreeSet、Li…

程序员的职业选择:打工者、独立开发者、创业者

当你励志成为一名程序员的时候&#xff0c;你是否有对自己的职业生涯进行规划&#xff0c;作为一名开发人员你的理想是什么&#xff0c;希望成为一名什么样的开发者&#xff0c;这些都是不可逃避的问题&#xff0c;本篇文章给大家简单介绍一下程序员的职业选择&#xff1a;打工…

java获取用户地理位置_java web 通过ip获取当前地理位置

public static void main(String[] args) throws Exception{// A File object pointing to your GeoIP2 or GeoLite2 databaseFile database new File("F:/定位/GeoLite2-City.mmdb");// This creates the DatabaseReader object, which should be reused across// …

IOC和DI是什么?

IoC (Inversion of Control) 控制反转 什么是控制反转&#xff1f; 控制反转是就是应用本身不负责依赖对象的创建和维护,依赖对象的创建及维护是由外部容器负责的,这样控制权就有应用转移到了外部容器,控制权的转移就是控制反转。 DI (Dependency Injection) 依赖注入 什么…

程序员公司选择:创业公司、中等规模公司、大公司

作为一名开发人员&#xff0c;选择不同类型的开发公司你的工作体验可能会完全不同&#xff0c;不同的公司文化也会深刻的影响着你的工作幸福感、存在感、归属感。本篇文章主要给大家分享一下不同类型的公司有什么特点&#xff0c;应该如何进行选择&#xff0c;希望对大家能带来…

jsp java注释_jsp注释方式

1&#xff0c;HTML的注释方法说明:使用该注释方法,其中的注释内容在客户端浏览中是看不见的。但是查看源代码时,客户是可以看到这些注释内容2&#xff0c;JSP注释标记JSP 也提供了自己的标记来进行注释,其使用的格式一般如下:add your comments here--%>说明:使用该注释方法…

cojs 香蕉 解题报告

啦啦啦&#xff0c;今天的考试题 不过原来考试题的n<10w 由于我有更好的做法&#xff0c;所以我就改成20亿辣 本来先说一说考试题的正解做法的 但是复杂度是O(nlogm)&#xff0c;实在是太渣了 所以还是说一说我的做法吧 首先假定都会写裸的DP 我们考虑A,B&#xff0c;如果B不…

Cannot access repo1 (http://repo1.maven.org/maven2) in offline mode and the

我在maven打包的时候出现问题&#xff0c;报错如下&#xff1a; 解决方法&#xff1a; 方法一&#xff1a;如果你出现了如上错误,是因为你的离线模式而导致的依赖的jar包或者需要的插件不能够联网下载 箭头处按钮不能点&#xff0c;点击后表示离线模式 方法二&#xff1a;idea…

作为程序员如何成为专业人士?

1、什么是专业人士&#xff1f;专业人士通常会严肃对待自己的责任和事业&#xff0c;并且愿意作出艰难的选择&#xff0c;然后去做自己认为是正确的事情&#xff0c;当然往往还要自己承担对应的代价。2、专业人士的特点1、恪尽职守、精益求精、不会曲意逢迎。专业人士会让你知道…