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

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()方法大概是这个样子的:

 private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null); //创建一个显示文本为New button的按钮
JButton NewButton = new JButton("New button");
//设置按钮的位置和长宽属性
NewButton.setBounds(28, 138, 117, 129);
frame.getContentPane().add(NewButton);
}

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

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

 private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null); //创建一个显示文本为New button的按钮
JButton NewButton = new JButton("New button"); //给NewButton添加鼠标点击监听器
NewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//当NewButton被点击时,mouseClicked()方法中的代码会被执行
}
}); //设置按钮的位置和长宽属性
NewButton.setBounds(28, 138, 117, 29);
frame.getContentPane().add(NewButton);
}

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

1.抽象类

2.接口

3.匿名内部类

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

 new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//当NewButton被点击时,mouseClicked()方法中的代码会被执行
}
}

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

 public void mouseClicked(MouseEvent e) {
//当NewButton被点击时,mouseClicked()方法中的代码会被执行
System.out.println("按钮被点击了!");
}

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

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

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

 package swing;

 import java.awt.EventQueue;

 import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; public class MyEdit { private JFrame frame;
private JTextArea textArea; /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MyEdit window = new MyEdit();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the application.
*/
public MyEdit() {
initialize();
} /**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null); //创建一个显示文本为New button的按钮
JButton cutButton = new JButton("剪切"); //给NewButton添加鼠标点击监听器
cutButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//当NewButton被点击时,mouseClicked()方法中的代码会被执行 }
}); //设置按钮的位置和长宽属性
cutButton.setBounds(6, 121, 117, 29);
frame.getContentPane().add(cutButton); textArea = new JTextArea();
textArea.setBounds(6, 6, 425, 81);
frame.getContentPane().add(textArea); //复制按钮
JButton copyButton = new JButton("复制");
copyButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
textArea.copy();
}
});
copyButton.setBounds(6, 163, 117, 29);
frame.getContentPane().add(copyButton); //粘贴按钮
JButton pasteButton = new JButton("粘贴");
pasteButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
textArea.paste();
}
});
pasteButton.setBounds(6, 204, 117, 29);
frame.getContentPane().add(pasteButton); //删除按钮
JButton deleteButton = new JButton("删除");
deleteButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//将选中的文字删除掉。请ctrl+单击replaceSelection()方法,查看方法使用详情
textArea.replaceSelection(null);
}
});
deleteButton.setBounds(154, 121, 117, 29);
frame.getContentPane().add(deleteButton); //全选按钮
JButton selectAllButton = new JButton("全选");
selectAllButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
textArea.selectAll();
}
});
selectAllButton.setBounds(154, 163, 117, 29);
frame.getContentPane().add(selectAllButton);
}
}

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

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

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

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

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

那个记事本程序中的剪切,复制,粘贴,删除,全选功能就是上面那样实现的。把上面的代码看懂以后,就又懂了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 Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能的更多相关文章

  1. 在Indicator中添加动态Checkbox,无需绑定数据源,支持全选 - Ehlib学习(二)

    先做设置 DBGrideh属性设置: IndicatorOptions = [gioShowRowIndicatorEh, //小三角指示 gioShowRecNoEh, //数据源行号 gioSho ...

  2. Android--解决EditText放到popupWindow中,原有复制、粘贴、全选、选择功能失效问题

    1.原来是将EditView放到了popupwindow,发现EditView原有的复制.粘贴.全选.选择功能失效了,所以便用DialogFragment代替了popupWindow 直接上代码 ①. ...

  3. DEV控件中GridView中的复选框与CheckBox实现联动的全选功能

    最初的界面图如图1-1(全选框ID: cb_checkall  DEV控件名称:gcCon ): 要实现的功能如下图(1-2  1-3  1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...

  4. 在Mac中设置Ctrl+C/V进行复制/粘贴

    从Windows世界走入Mac世界,最让不习惯的是在Mac中“复制/粘贴”的快捷键是Command+C/V.而且Command键与C/V键靠得太近,只能用大拇指与食指进行操作,也让人不习惯.再加上远程 ...

  5. CSDN中的MARKDOWN编辑器如何快速复制粘贴图片?

    前言 我们在使用csdn的markdown编辑器复制其它网站图片,按住ctrl+C复制选择图片,然后按ctrl+V粘贴图片到md编辑器无任何反应!markdown编辑器每次都没法复制粘贴截图! 下面小 ...

  6. Eclipse编辑JS响应慢,复制粘贴卡顿的解决方案

    我使用的是官网标准版的eclipse4.3 for javaEE, 写JS时卡的简直无法忍受,尝试去掉所有的validate,包括菜单和项目属性中的都没作用. 整个人都急疯了~ 后来在项目根目录.pr ...

  7. 在字符界面tty1~tty6中使用鼠标,并用其复制粘贴

    1. 安装 无意间看到gpm这个服务可以让你在tty1~tty6 环境中使用鼠标. 先用 rpm -qa gpm 查看是否已经安装此服务,如果提示以安装,则可以直接开启: 否则就要通过 yum ins ...

  8. 菜鸟初学Linux——Ubuntu系统中,用root权限进行复制粘贴操作

    long long ago,积累了一些Linux的小知识,拿出来分享一下,希望以后能够在工作上带来一些帮助. 方法一 第一步:打开终端,在命令行里输入sudo nautilus   第二步:输入你的用 ...

  9. C# winform中的datagridview控件标头加入checkbox,实现全选功能。

    /// <summary> /// 给DataGridView添加全选 /// </summary> public class AddCheckBoxToDataGridVie ...

随机推荐

  1. Dragon Balls(hdu3635带权并查集)

    题意:n个城市有n个龙珠,T  a,b 代表将龙珠a移动到b城市,Q a代表查询龙珠a所在城市,该城市有多少颗龙珠,该龙珠移动了多少次. 注意:移动时是将龙珠所在该城市所有龙珠都移动,每个龙珠不会再回 ...

  2. U盘读不出+卷标丢失+像读卡器+大小0+无媒体

    U盘读不出+卷标丢失+像读卡器+大小0+无媒体 标题有点怪,原因是我不都不知道该怎样概括这个鸟问题,所以尽可能列出一些主要现象,希望有需要的童鞋搜到.但比标题更怪的是问题本身,且听我道来: 陪伴我若干 ...

  3. 数模学习笔记(五)——BP神经网络

    1.BP神经网络是一种前馈型网络(各神经元接受前一层的输入,并输出给下一层,没有反馈),分为input层,hide层,output层 2.BP神经网络的步骤: 1)创建一个神经网络:newff a.训 ...

  4. 跨站脚本攻击(Cross‐Site Scripting (XSS))

    跨站脚本攻击(Cross‐Site Scripting (XSS)) 跨站脚本攻击(Cross‐Site Scripting (XSS)) XSS(Cross Site Script)跨站脚本攻击.是 ...

  5. 机器学习实战kNN之手写识别

    kNN算法算是机器学习入门级绝佳的素材.书上是这样诠释的:“存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都有标签,即我们知道样本集中每一条数据与所属分类的对应关系.输入没有标签的新数据 ...

  6. web打印小结

    项目中有个需求是将winform客户端的打印,移到网页上由客户自行打印,打印要求是根据一定的格式实现套打. 当时的解决方案是使用PDF打印: 1. 准备好套打格式的底图: 2.打开底图,将动态内容画到 ...

  7. Hexo+NextT第三方服务调用【4】

    该系列博客列表请访问:http://www.cnblogs.com/penglei-it/category/934299.html 摘要        静态站点与动态站点有很大的不一样,它拥有一定的局 ...

  8. js jquery 实现html页面之间参数传递(单一参数、对象参数传递)

    最近自己在忙着做毕业设计,后台程序员,前端菜鸡,因为需要,所以实现了html页面之间参数传递.------jstarseven .菜鸡的自我修养. 页面A代码如下: <!DOCTYPE html ...

  9. Python中Generators教程

    转载至:https://www.bytelang.com/article/content/NQbmUaRIXyA= 要想创建一个iterator,必须实现一个有__iter__()和__next__( ...

  10. [开发者账号] ios7苹果开发者账号申请

    1.登陆  https://developer.apple.com/ 2.点击网站最底部的 3.点击 4.然后根据提示继续点击 注意:1.点击的过程中注意个人和企业账号  开发者类型等 2.付款账号的 ...