最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java利用剪貼板實現交換程序間數據的方法

 更新時間:2014年07月29日 11:45:07   投稿:shichen2014  
這篇文章主要介紹了Java利用剪貼板實現交換程序間數據的方法,需要的朋友可以參考下

本文實例講述了Java利用剪貼板交換程序間數據的實現方法。在圖形化系統(tǒng)中,系統(tǒng)剪貼板非常重要,很難想象一個沒有剪貼板功能的圖形化操作系統(tǒng)使用起來會是怎樣。本例就實現了Java 程序與所在系統(tǒng)的剪貼板的數據交流,當單擊“Paste”按鈕后,Java 程序從系統(tǒng)剪貼板中取得數據并顯示在一個JTextArea 組件中;當單擊“Copy”按鈕后,文本區(qū)中的選中文本將被傳送到系統(tǒng)剪貼板上。

首先必須得到系統(tǒng)剪貼板的實例引用,java.awt.Toolkit 類中提供了getSystemClipboard()方法來返回一個Clipboard 實例;并且由于Toolkit 類提供了靜態(tài)方法getDefaultToolkit()返回一個Toolkit實例,因此也不必new 一個Toolkit 對象,具體實現代碼如下:

Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();

此處Clipboard 類提供了getContents()和setContents()方法來實現數據交換。

Transferable getContents(Object requester);
Void setContents(Transferable contents, ClipboardOwner owner);

此處的getContents()方法從系統(tǒng)剪貼板中獲得一個Transferable 對象,參數requester 表示數據申請者,一般用this 就行了,表示要求數據的是本類的實例對象。如果要求的數據是文本,可以調用Transferable對象的getTransferData(DataFlavor.stringFlavor)得到,實現代碼如下:

Transferable tr = cb.getContents(this);
String s = (String) tr.getTransferData(DataFlavor.stringFlavor);

setContents()方法從程序中傳數據到系統(tǒng)剪貼板,參數contents 表示數據,參數owner 表示剪貼板的擁有者。

StringSelection ss = new StringSelection(this.jTextArea1.getText());
cb.setContents(ss,ss);

上面語句中的StringSelection 類表示選中的文本。
從上面的分析,實際上系統(tǒng)剪貼板中存放的是Transferable對象集合,程序和系統(tǒng)剪貼板的數據交換就是Transferable 對象的傳遞。程序代碼:

1.新建一個Project,取名為JClipDemo。
2.新建一個Application,取名為JClipDemo;主窗口名取名為MainFrame,標題為JClipDemo。
3.在MainFrame 類的設計窗口中添加一個JTextArea 組件、兩個JButton 和一個JPanel 組件,并且兩個JButton 組件放在JPanel 組件上。添加新的屬性Clipboard cb。具體代碼如下:

public class MainFrame extends JFrame {
private JPanel contentPane;
private BorderLayout borderLayout1 = new BorderLayout();
//創(chuàng)建新的組件
private JTextArea jTextArea1 = new JTextArea();
private JPanel jPanel1 = new JPanel();
private JButton jButton1 = new JButton();
private JButton jButton2 = new JButton();
//剪貼板實例
Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();
……
}

4.編寫MainFrame 類的初始化方法jbInit(),完成各組件的初始屬性設置,并為按鈕組件添加事件監(jiān)聽器,具體代碼如下:

private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(396, 203));
this.setTitle("JClipboardDemo");
jButton1.setFont(new java.awt.Font("Dialog", 0, 14));
jButton1.setText("Copy");
jButton1.addActionListener(new java.awt.event.ActionListener() { //添加事件監(jiān)聽器
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setFont(new java.awt.Font("Dialog", 0, 14));
jButton2.setText("Paste");
jButton2.addActionListener(new java.awt.event.ActionListener() {//添加事件監(jiān)聽器
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
contentPane.add(jTextArea1, BorderLayout.CENTER);
contentPane.add(jPanel1, BorderLayout.SOUTH);
jPanel1.add(jButton1, null);
jPanel1.add(jButton2, null);
}

5.編寫“Copy”按鈕的事件處理方法,向系統(tǒng)剪貼板發(fā)送數據。

void jButton1_actionPerformed(ActionEvent e) {
StringSelection ss = new StringSelection(this.jTextArea1.getText()); //發(fā)送選中文本到系統(tǒng)剪貼板
cb.setContents(ss,ss);
}

6.編寫“Paste”按鈕的事件處理方法,從系統(tǒng)剪貼板獲得數據。

void jButton2_actionPerformed(ActionEvent e) {
try{
Transferable tr = cb.getContents(this); //從系統(tǒng)剪貼板得到一個Transferable 對象
if (tr != null){
String s = (String) tr.getTransferData(DataFlavor.stringFlavor); //從Transferable 對象中得到文本數據
if (s!=null)
this.jTextArea1.insert(s,this.jTextArea1.getCaretPosition()); //在JTextArea 組件中的光標所在處插入文本
}
}catch(Exception err){
err.printStackTrace();
}
}

相關文章

  • 一文搞懂spring boot本地事務@Transactional參數

    一文搞懂spring boot本地事務@Transactional參數

    這篇文章主要介紹了spring boot本地事務@Transactional參數詳解,本文通過示例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • Java8中LocalDateTime與時間戳timestamp的互相轉換

    Java8中LocalDateTime與時間戳timestamp的互相轉換

    這篇文章主要給大家介紹了關于Java8中LocalDateTime與時間戳timestamp的互相轉換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 帶你深入了解java-代理機制

    帶你深入了解java-代理機制

    Java 有兩種代理方式,一種是靜態(tài)代理,另一種是動態(tài)代理。如果我們在代碼編譯時就確定了被代理的類是哪一個,那么就可以直接使用靜態(tài)代理;如果不能確定,那么可以使用類的動態(tài)加載機制,在代碼運行期間加載被代理的類這就是動態(tài)代理
    2021-08-08
  • Java中的HashMap和Hashtable區(qū)別解析

    Java中的HashMap和Hashtable區(qū)別解析

    這篇文章主要介紹了Java中的HashMap和Hashtable區(qū)別解析,HashMap和Hashtable都實現了Map接口,但決定用哪一個之前先要弄清楚它們之間的區(qū)別,主要的區(qū)別有線程安全性、同步和速度,需要的朋友可以參考下
    2023-11-11
  • 關于Spring中Bean的創(chuàng)建進行更多方面的控制

    關于Spring中Bean的創(chuàng)建進行更多方面的控制

    今天小編就為大家分享一篇關于關于Spring中Bean的創(chuàng)建進行更多方面的控制,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • javaweb中Filter(過濾器)的常見應用

    javaweb中Filter(過濾器)的常見應用

    這篇文章主要介紹了javaweb中Filter的常見應用,過濾器的使用方法,感興趣的小伙伴們可以參考一下
    2015-12-12
  • Java多線程模擬售票程序和線程安全問題

    Java多線程模擬售票程序和線程安全問題

    本篇文章給大家分享了Java多線程模擬售票程序和線程安全問題的相關知識點,對此有興趣的朋友可以參考學習下。
    2018-05-05
  • 教你用java?stream對集合中的對象按指定字段進行分組并統(tǒng)計

    教你用java?stream對集合中的對象按指定字段進行分組并統(tǒng)計

    這篇文章主要給大家介紹了關于用java?stream對集合中的對象按指定字段進行分組并統(tǒng)計的相關資料,本文主要介紹了如何利用Java的Stream流來實現在list集合中,對具有相同name屬性的對象進行匯總計算的需求,需要的朋友可以參考下
    2024-10-10
  • 自定義SpringBoot的白標錯誤頁面的操作方法

    自定義SpringBoot的白標錯誤頁面的操作方法

    Spring Boot的白標錯誤頁面是在應用程序出現錯誤時(如404或500 HTTP狀態(tài)碼)自動生成的默認錯誤頁面,下面小編給大家分享如何自定義SpringBoot的白標錯誤頁面,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • java命令調用虛擬機方法總結

    java命令調用虛擬機方法總結

    在本篇文章里我們給大家整理了關于java中的java命令如何調用虛擬機的方法和具體步驟,需要的朋友們跟著操作下。
    2019-05-05

最新評論

甘孜| 松桃| 科技| 永泰县| 连云港市| 通道| 南充市| 乐安县| 郑州市| 天镇县| 桐柏县| 剑阁县| 通道| 远安县| 吉隆县| 南宫市| 乾安县| 建瓯市| 平谷区| 宁化县| 顺平县| 宜章县| 大名县| 措勤县| 宝山区| 财经| 芒康县| 伊通| 屏山县| 益阳市| 南城县| 竹山县| 灵宝市| 磐石市| 雅江县| 永安市| 蓬莱市| 临城县| 繁昌县| 红桥区| 景德镇市|