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按鈕添加鼠標點擊事件監聽器

先弄一個這種樣子的對話框出來

89abc3596d82ad35a702d3687f8d4f79.png

然后查看源碼中的initialize()方法大概是這個樣子的:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.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的鼠標點擊事件監聽器就添加成功了

fe07649a611bbf6549d740c97a9035e1.png

然后查看源碼,你會發現initialize()方法變成了大概這個樣子:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.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個板塊以后我在出個上面代碼解釋的詳細版本給你。這里你只要把它理解為一個“鼠標點擊監聽器”就好了。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 newMouseAdapter() {2 @Override3 public voidmouseClicked(MouseEvent e) {4 //當NewButton被點擊時,mouseClicked()方法中的代碼會被執行

5 }6 }

View Code

JButton通過它的addMouseListener()方法給自己添加了上面那個監聽器。這個監聽器的作用是:當鼠標點擊這個按鈕時:mouseClicked()方法中的代碼會被執行。這就給了你機會,讓你可以寫自己的代碼來響應點擊事件。將mouseClicked()方法修改為:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 public voidmouseClicked(MouseEvent e) {2 //當NewButton被點擊時,mouseClicked()方法中的代碼會被執行

3 System.out.println("按鈕被點擊了!");4 }

View Code

當你點擊按鈕時,控制臺就會輸出:按鈕被點擊了!

2.文本區控件JTextArea 中的方法(剪切,復制,粘貼,刪除,全選 ?等功能的實現)

下面這個程序中包含一個可輸入的文本區+5個按鈕。每個按鈕都被添加了鼠標點擊事件。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.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”

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271884.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271884.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271884.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習進度條07

第八周所花時間28小時代碼量 50博客量7篇了解到的知識點 java中swing控件可以用來設置圖形化界面,讓界面更加好看; 可以引用相關的包和類,來改變圖形化的界面,讓界面更加美觀。 轉載于:https://www.cnblogs.com/Daddy/p/5427670.h…

迭代器(Iterator)遍歷的兩種方法(for和while)

一般遍歷list的時候&#xff0c;我們習慣下面的寫法,但這種寫法有缺陷&#xff0c;不能及時釋放iterator的內存 while循環遍歷 Test public void testIteratorWhile(){ArrayList<String> lists new ArrayList<>();lists.add("A");lists.add("B&…

硬件:斷路器、接觸器、繼電器基礎知識

在電力系統中&#xff0c;斷路器、接觸器、繼電器似乎都是耳熟能詳的家伙&#xff0c;但很多一知半解的&#xff0c;卻也搞不清這些東西究竟有什么不同&#xff0c;又有什么聯系&#xff0c;今天我們就一起講一講。 首先說相同的吧&#xff01; 當然&#xff0c;無可非議的&…

java pem,如何驗證Java中的PEM格式證書

I have PEM format file, How can verify the signature in Java, as I followed http://download.oracle.com/javase/tutorial/security/apisign/versig.html but found that Java doesnt support PEM解決方案You can read a certificate in a PEM file using BouncyCastles P…

PDU與SDU理解

慣例&#xff1a;首先標注定義&#xff0c;而后是形象的解釋。 PDU(Protocol Data Unit)協議數據單元 SDU(service data unit)服務數據單元 什么是協議數據單元&#xff1f;就是按照協議的要求來傳輸的數據。什么是服務數據單元呢&#xff1f;就是指傳輸的數據。 這里有個例子&…

Collection和Collections區別

1.Collection: 是集合類的上層接口。本身是一個Interface&#xff0c;里面包含了一些集合的基本操作。 Collection接口是Set接口和List接口的父接口 Collection接口的方法 2.Collections Collections是一個集合框架的幫助類&#xff0c;里面包含一些對集合的排序&#xff0c;…

程序員效率:整理常用的在線筆記軟件

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

修飾符總結

面試的時候&#xff0c;如果有筆試就會有一個筆試題就是&#xff1a;private&#xff0c;protected&#xff0c;public&#xff0c;internal的區別&#xff1f; 那么我每次都是簡單的寫下。今天具體的來總結下。 public &#xff1a;公共的。很好理解&#xff0c;就是所有人都可…

怎么確保一個集合不能被修改?

我們很容易想到用final關鍵字進行修飾&#xff0c;我們都知道final關鍵字可以修飾類&#xff0c;方法&#xff0c;成員變量&#xff0c;final修飾的類不能被繼承&#xff0c;final修飾的方法不能被重寫&#xff0c;final修飾的成員變量必須初始化值&#xff0c;如果這個成員變量…

程序員如何與人打交道

作為程序員&#xff0c;人際關系也是必備的技能之一&#xff0c;本篇文章給大家介紹一下作為程序員處理人際關系需要注意的因素。1、每個人都希望自己被重視當你和他人溝通交流的時候&#xff0c;每個人都希望自己被重視&#xff0c;因為每個人都有自己的想法和觀點&#xff0c…

BZOJ_1798__Codevs_2216_[AHOI_2009]_行星序列_(線段樹)

描述 BZOJ: http://www.lydsy.com/JudgeOnline/problem.php?id1798 Codevs: http://codevs.cn/problem/2216/ 給出n和行星的質量,進行m次操作: 1.將[l,r]區間內所有行星質量*c. 2.將[l,r]區間內所有行星質量c. 3.詢問[l,r]區間內行星質量和. 分析 雙標記線段樹,多加一個乘法的…

Java中三種Set的實現類的用法和區別

Java為開發者提供了大量的工具類&#xff0c;這給開發人員帶來了很大方便&#xff0c;但是選擇多了也有困擾&#xff0c;究竟用哪個類&#xff1b;我想選擇什么&#xff0c;一是看自己具體需求&#xff0c;二是類本身的性能和用法&#xff1b;Java中提供了HashSet、TreeSet、Li…

程序員的職業選擇:打工者、獨立開發者、創業者

當你勵志成為一名程序員的時候&#xff0c;你是否有對自己的職業生涯進行規劃&#xff0c;作為一名開發人員你的理想是什么&#xff0c;希望成為一名什么樣的開發者&#xff0c;這些都是不可逃避的問題&#xff0c;本篇文章給大家簡單介紹一下程序員的職業選擇&#xff1a;打工…

java獲取用戶地理位置_java web 通過ip獲取當前地理位置

public static void main(String[] args) throws Exception{// A File object pointing to your GeoIP2 or GeoLite2 databaseFile database new File("F:/定位/GeoLite2-City.mmdb");// This creates the DatabaseReader object, which should be reused across// …

IOC和DI是什么?

IoC (Inversion of Control) 控制反轉 什么是控制反轉&#xff1f; 控制反轉是就是應用本身不負責依賴對象的創建和維護,依賴對象的創建及維護是由外部容器負責的,這樣控制權就有應用轉移到了外部容器,控制權的轉移就是控制反轉。 DI (Dependency Injection) 依賴注入 什么…

程序員公司選擇:創業公司、中等規模公司、大公司

作為一名開發人員&#xff0c;選擇不同類型的開發公司你的工作體驗可能會完全不同&#xff0c;不同的公司文化也會深刻的影響著你的工作幸福感、存在感、歸屬感。本篇文章主要給大家分享一下不同類型的公司有什么特點&#xff0c;應該如何進行選擇&#xff0c;希望對大家能帶來…

jsp java注釋_jsp注釋方式

1&#xff0c;HTML的注釋方法說明:使用該注釋方法,其中的注釋內容在客戶端瀏覽中是看不見的。但是查看源代碼時,客戶是可以看到這些注釋內容2&#xff0c;JSP注釋標記JSP 也提供了自己的標記來進行注釋,其使用的格式一般如下:add your comments here--%>說明:使用該注釋方法…

cojs 香蕉 解題報告

啦啦啦&#xff0c;今天的考試題 不過原來考試題的n<10w 由于我有更好的做法&#xff0c;所以我就改成20億辣 本來先說一說考試題的正解做法的 但是復雜度是O(nlogm)&#xff0c;實在是太渣了 所以還是說一說我的做法吧 首先假定都會寫裸的DP 我們考慮A,B&#xff0c;如果B不…

Cannot access repo1 (http://repo1.maven.org/maven2) in offline mode and the

我在maven打包的時候出現問題&#xff0c;報錯如下&#xff1a; 解決方法&#xff1a; 方法一&#xff1a;如果你出現了如上錯誤,是因為你的離線模式而導致的依賴的jar包或者需要的插件不能夠聯網下載 箭頭處按鈕不能點&#xff0c;點擊后表示離線模式 方法二&#xff1a;idea…

作為程序員如何成為專業人士?

1、什么是專業人士&#xff1f;專業人士通常會嚴肅對待自己的責任和事業&#xff0c;并且愿意作出艱難的選擇&#xff0c;然后去做自己認為是正確的事情&#xff0c;當然往往還要自己承擔對應的代價。2、專業人士的特點1、恪盡職守、精益求精、不會曲意逢迎。專業人士會讓你知道…