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

     1 private void initialize() {
     2         frame = new JFrame();
     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()方法变成了大概这个样子:

     1 private void initialize() {
     2         frame = new JFrame();
     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(new MouseAdapter() {
    12             @Override
    13             public void mouseClicked(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个板块以后我在出个上面代码解释的详细版本给你。这里你只要把它理解为一个“鼠标点击监听器”就好了。

    1 new MouseAdapter() {
    2             @Override
    3             public void mouseClicked(MouseEvent e) {
    4                 //当NewButton被点击时,mouseClicked()方法中的代码会被执行
    5             }
    6         }
    View Code

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

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

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

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

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

      1 package swing;
      2 
      3 import java.awt.EventQueue;
      4 
      5 import javax.swing.JFrame;
      6 import javax.swing.JTextArea;
      7 import javax.swing.JButton;
      8 import java.awt.event.ActionListener;
      9 import java.awt.event.ActionEvent;
     10 import java.awt.event.MouseAdapter;
     11 import java.awt.event.MouseEvent;
     12 
     13 public class MyEdit {
     14 
     15     private JFrame frame;
     16     private JTextArea textArea;
     17 
     18     /**
     19      * Launch the application.
     20      */
     21     public static void main(String[] args) {
     22         EventQueue.invokeLater(new Runnable() {
     23             public void run() {
     24                 try {
     25                     MyEdit window = new MyEdit();
     26                     window.frame.setVisible(true);
     27                 } catch (Exception e) {
     28                     e.printStackTrace();
     29                 }
     30             }
     31         });
     32     }
     33 
     34     /**
     35      * Create the application.
     36      */
     37     public MyEdit() {
     38         initialize();
     39     }
     40 
     41     /**
     42      * Initialize the contents of the frame.
     43      */
     44     private void initialize() {
     45         frame = new JFrame();
     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(new MouseAdapter() {
     56             @Override
     57             public void mouseClicked(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 = new JTextArea();
     69         textArea.setBounds(6, 6, 425, 81);
     70         frame.getContentPane().add(textArea);
     71         
     72         //复制按钮
     73         JButton copyButton = new JButton("复制");
     74         copyButton.addMouseListener(new MouseAdapter() {
     75             @Override
     76             public void mouseClicked(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(new MouseAdapter() {
     86             @Override
     87             public void mouseClicked(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(new MouseAdapter() {
     97             @Override
     98             public void mouseClicked(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(new MouseAdapter() {
    109             @Override
    110             public void mouseClicked(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”

  • 相关阅读:
    Tensorflow之MNIST机器学习入门
    MongoDB学习第七篇 --- sql和mongodb对比
    MongoDB学习第六篇 --- Delete操作
    MongoDB学习第五篇 --- Update操作
    MongoDB学习第四篇 --- Query操作
    MongoDB学习第三篇 --- Insert操作
    MongoDB学习第二篇 --- Mac下通过 Shell 执行 mongo 命令
    MongoDB学习第一篇 --- Mac下使用HomeBrew安装MongoDB
    python连接sql server数据库实现增删改查
    转。webapp开发小tips
  • 原文地址:https://www.cnblogs.com/AbsurdFantasy/p/4759079.html
Copyright © 2020-2023  润新知