标签:
这篇文字将要学习以下知识点:
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 }
接下来给按钮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 }
其中这一部分就是“鼠标点击监听器”。这里你也许会产生一个问题,使用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 }
JButton通过它的addMouseListener()方法给自己添加了上面那个监听器。这个监听器的作用是:当鼠标点击这个按钮时:mouseClicked()方法中的代码会被执行。这就给了你机会,让你可以写自己的代码来响应点击事件。将mouseClicked()方法修改为:
1 public void mouseClicked(MouseEvent e) { 2 //当NewButton被点击时,mouseClicked()方法中的代码会被执行 3 System.out.println("按钮被点击了!"); 4 }
当你点击按钮时,控制台就会输出:按钮被点击了!
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 }
剪切按钮:选中文本中输入的一段问题,然后单击此按钮,选中的文字就被复制到了剪贴板
复制按钮:和剪切按钮类似
粘贴按钮:随便在网页上复制一段文字,然后选中文本区,然后按粘贴按钮,在网页上复制的文字就被粘贴到文本区中了
删除按钮:选中文本区中的一段文字,然后点击此按钮,选中的文字就被删除了
全选按钮:点击此按钮,文本区中的所有文字就会被选中
那个记事本程序中的剪切,复制,粘贴,删除,全选功能就是上面那样实现的。把上面的代码看懂以后,就又懂了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 如何实现记事本中“编辑”菜单下的各项功能
标签:
原文地址:http://www.cnblogs.com/AbsurdFantasy/p/4759079.html