一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java利用剪貼板實現交換程序間數據的方法

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

2019-11-25 14:24shichen2014 JAVA教程

這篇文章主要介紹了Java利用剪貼板實現交換程序間數據的方法,需要的朋友可以參考下

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

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

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

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

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

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

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

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

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

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
public class MainFrame extends JFrame {
private JPanel contentPane;
private BorderLayout borderLayout1 = new BorderLayout();
//創建新的組件
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(),完成各組件的初始屬性設置,并為按鈕組件添加事件監聽器,具體代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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() { //添加事件監聽器
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() {//添加事件監聽器
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”按鈕的事件處理方法,向系統剪貼板發送數據。

?
1
2
3
4
void jButton1_actionPerformed(ActionEvent e) {
StringSelection ss = new StringSelection(this.jTextArea1.getText()); //發送選中文本到系統剪貼板
cb.setContents(ss,ss);
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
void jButton2_actionPerformed(ActionEvent e) {
try{
Transferable tr = cb.getContents(this); //從系統剪貼板得到一個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();
}
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青青青久久国产片免费精品 | 91制片厂免费观看 | 欧美日韩国产亚洲人成 | 国产一卡2卡3卡四卡高清 | 九九九九九九伊人 | bban女同系列022在线观看 | 久久精品国产久精国产果冻传媒 | 国产99久久九九精品免费 | 亚洲狠狠综合久久 | 99爱在线观看精品视频 | 精品一区二区三区免费站 | 激情综合色啪啪小说 | 成人免费国产欧美日韩你懂的 | 思敏1一5集国语版免费观看 | 全黄毛片 | 色综合色狠狠天天综合色 | 国产精品亚洲综合第一区 | 91欧洲在线视精品在亚洲 | 国产精品久久久久久久午夜片 | 操穴勤| 国产老村长足疗店对白 | 青青操在线 | 俄罗斯12一15处交 | 精品一区二区三区自拍图片区 | 日韩欧美一区二区在线 | 99久久久久国产 | 香蕉精品国产高清自在自线 | 四虎成人影院 | 国产高清不卡视频在线播放 | 嫩草精品| 十大看黄网站 | 婷婷天天| 冰漪丰满大乳人体图片欣赏 | 好大~好爽~再进去一点 | 好男人影视社区www在线观看 | 欧美久久天天综合香蕉伊 | 国产99er66在线视频 | 91在线 一区 二区三区 | 亚洲一级特黄特黄的大片 | 亚洲免费大全 | 久久不卡免费视频 |