java中系統剪貼簿的使用

來源:互聯網
上載者:User

java.awt.datatransfer包提供的類只能夠將程式先剪下或複製到系統剪下板中

 

今天要做的執行個體是自己實現copy,cut,paste的功能。先

 

1)複製功能:擷取游標選中的值,然後將值放到系統剪貼簿中

 

2)剪下功能:擷取游標選中的值,然後將值放到系統剪貼簿中。同時記錄游標的起點和終點位置,清空游標選中的內容

 

3)黏貼功能:擷取剪貼簿中的內容,並將其賦值給文字框

 

註:代碼如下。具體注釋標註在代碼中

/**<br /> * 匯入java中的庫檔案<br /> */<br />import java.awt.*;<br />import java.awt.event.*;<br />import java.awt.datatransfer.*;</p><p>/**<br /> * 自訂Win類,繼承自Frame表單,繼承ActionListener介面<br /> * @author chenshanshan<br /> *<br /> */<br />class Win extends Frame implements ActionListener<br />{<br />//菜單工具條<br />MenuBar menubar;<br />//菜單<br />Menu menu;<br />//菜單列表<br />MenuItem copy,cut,paste;<br />//文字框<br />TextArea t1,t2;<br />//剪貼簿<br />Clipboard clb=null;</p><p>/**<br /> * 建構函式<br /> */<br />Win()<br />{<br />//擷取系統剪貼簿<br />clb=getToolkit().getSystemClipboard();</p><p>//設定表單控制項<br />menubar=new MenuBar();<br />menu=new Menu("Edit");<br />copy=new MenuItem("copy");<br />cut=new MenuItem("cut");<br />paste=new MenuItem("paste");<br />t1=new TextArea(10,20);<br />t2=new TextArea(10,20);<br />menubar.add(menu);<br />menu.add(copy);<br />menu.add(cut);<br />menu.add(paste);<br />setMenuBar(menubar);<br />add(t1);<br />add(t2);</p><p>//添加事件監聽<br />copy.addActionListener(this);<br />cut.addActionListener(this);<br />paste.addActionListener(this);</p><p>//設定表單相關屬性<br />setLayout(new FlowLayout());<br />setBounds(100,100,400,350);<br />//表單可見<br />setVisible(true);<br />//添加組件的有效驗證<br />validate();</p><p>//添加表單關閉事件的監聽<br />addWindowListener(new WindowAdapter()<br />{<br />public void windowClosing(WindowEvent e)<br />{<br />System.exit(0);<br />}<br />});<br />}</p><p>/**<br /> * menu的監聽<br /> */<br />public void actionPerformed(ActionEvent e)<br />{<br />//複製<br />if(e.getSource()==copy)<br />{<br />//擷取文字框1中游標選中的值<br />String temp=t1.getSelectedText();<br />//將至以無格式文字格式設定傳送<br />StringSelection text=new StringSelection(temp);<br />//將值設定到系統剪貼簿中<br />clb.setContents(text, null);<br />}<br />//剪下<br />else if(e.getSource()==cut)<br />{<br />String temp=t1.getSelectedText();<br />StringSelection text=new StringSelection(temp);<br />clb.setContents(text, null);<br />//擷取游標選中的起點、終點位置<br />int s=t1.getSelectionStart();<br />int end=t1.getSelectionEnd();<br />//將值從文字框1中刪除<br />t1.replaceRange("", s, end);<br />}<br />//黏貼<br />else if(e.getSource()==paste)<br />{<br />//擷取剪貼簿中的值,con為要進行傳輸操作的資料<br />Transferable con=clb.getContents(this);<br />//表示一個 Java Unicode String 類的 DataFlavor<br />DataFlavor flavor=DataFlavor.stringFlavor;<br />//判斷con是否是支援指定的資料 flavor。<br />if(con.isDataFlavorSupported(flavor))<br />{<br />try<br />{<br />String str;<br />//返回一個對象,該對象表示將要被傳輸的資料<br />str=(String )con.getTransferData(flavor);<br />//將系統剪貼簿返回的資料放到文字框2中<br />t2.append(str);<br />}<br />catch(Exception ee)<br />{</p><p>}<br />}<br />}<br />}<br />}</p><p>public class testcopy {<br />public static void main(String args[])<br />{<br />//調用自訂的表單類<br />new Win();<br />}</p><p>}<br />

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.