java记事本页面设置功能_Java Swing 如何实现记事本中“编辑”菜单下的各项功能...

本文主要是介绍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按钮添加鼠标点击事件监听器

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

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

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.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的鼠标点击事件监听器就添加成功了

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

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.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个板块以后我在出个上面代码解释的详细版本给你。这里你只要把它理解为一个“鼠标点击监听器”就好了。

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.png

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

5 }6 }

View Code

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

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.png

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

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

View Code

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

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

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

cdec0645add3fc3c328197dda5c76203.png

81178cc93a2a3bb5048d90d76e7ec935.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”

标签:

这篇关于java记事本页面设置功能_Java Swing 如何实现记事本中“编辑”菜单下的各项功能...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238152

相关文章

Java Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很