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

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. EM算法详解

    EM算法详解 1 极大似然估计 假设有如图1的X所示的抽取的n个学生某门课程的成绩,又知学生的成绩符合高斯分布f(x|μ,σ2),求学生的成绩最符合哪种高斯分布,即μ和σ2最优值是什么? 图1 学生成 ...

  2. SQL 使用存储过程创建报表的一点体会

    以前创建报表的时候都是采用视图的方式来实现的,通过把关联的表字段选取后形成需要的报表,用起来也比较方便. 最近也尝试用存储过程来做一些开发,确实也方便不少,因为很多逻辑关系都可以灵活的在SQL来实现, ...

  3. 字符转十六进制 String => HEX using "hexdump" on linux

    hexdump 是一款非常简单的有效的将别的形式的文档转换成十六进制的工具. 最详细的使用说明都在 man hexdump 里面,请自行查阅. 这里我摘出几个常用的例子,一目了然: 这里我做了一个实验 ...

  4. Chrome插件i18n多语言实现

    i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称.Chrome插件框架中i18n的封装API: chrome.i18n.ge ...

  5. Integer.parseInt(String s, int radix)方法介绍(修正版)

    先来说明一下Integer.parseInt(String s, int radix)的功能. Integer.parseInt(String s, int radix)就是将整数字符串s(radix ...

  6. window与linux互相拷贝文件

    借助 PSCP 命令可以实现文件的互拷: 1.下载pscp.exe 文件 (我的资源文件中有) http://download.csdn.net/detail/trassion/5689189 2.如 ...

  7. swift 动态获取label宽度或高度

    func getLabHeigh(labelStr:String,font:UIFont,width:CGFloat) -> CGFloat { let statusLabelText: NSS ...

  8. Linux系统下搭建DNS服务器——DNS原理总结

    2017-01-07 整理 DNS原理 域名到IP地址的解析过程 IP地址到域名的反向域名解析过程 抓包分析DNS报文和具体解析过程 DNS服务器搭建和配置 这个东东也是今年博主参见校招的时候被很多公 ...

  9. Linux笔记(一) - 目录处理命令

    (1)列出文件: ls-a 显示所有文件及目录,包括隐藏文件-l 显示详细信息(长格式显示)-d 显示目录本身-h 人性化显示-i 查看i节点(2)创建目录:mkdir-p 递归创建可以同时创建多个, ...

  10. c#-委托,匿名方法,lambda表达的关系

    什么是委托: 包含单个方法的委托和函数指针是相似的,不同的是,委托是面向帝乡的并且是类型安全的 声明委托类型: delegate void mydel(int x); 声明委托和声明方法差不多,两个不 ...