程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java應用剪貼板完成交流法式間數據的辦法

Java應用剪貼板完成交流法式間數據的辦法

編輯:關於JAVA

Java應用剪貼板完成交流法式間數據的辦法。本站提示廣大學習愛好者:(Java應用剪貼板完成交流法式間數據的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java應用剪貼板完成交流法式間數據的辦法正文


本文實例講述了Java應用剪貼板交流法式間數據的完成辦法。在圖形化體系中,體系剪貼板異常主要,很難想象一個沒有剪貼板功效的圖形化操作體系應用起來會是如何。本例就完成了Java 法式與地點體系的剪貼板的數據交換,當單擊“Paste”按鈕後,Java 法式從體系剪貼板中獲得數據並顯示在一個JTextArea 組件中;當單擊“Copy”按鈕後,文本區中的選中文本將被傳送到體系剪貼板上。

起首必需獲得體系剪貼板的實例援用,java.awt.Toolkit 類中供給了getSystemClipboard()辦法來前往一個Clipboard 實例;而且因為Toolkit 類供給了靜態辦法getDefaultToolkit()前往一個Toolkit實例,是以也不用new 一個Toolkit 對象,詳細完成代碼以下:

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

此處Clipboard 類供給了getContents()和setContents()辦法來完成數據交流。

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

此處的getContents()辦法從體系剪貼板中取得一個Transferable 對象,參數requester 表現數據請求者,普通用this 就好了,表現請求數據的是本類的實例對象。假如請求的數據是文本,可以挪用Transferable對象的getTransferData(DataFlavor.stringFlavor)獲得,完成代碼以下:

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

setContents()辦法從法式中傳數據到體系剪貼板,參數contents 表現數據,參數owner 表現剪貼板的具有者。

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。詳細代碼以下:

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(),完成各組件的初始屬性設置,並為按鈕組件添加事宜監聽器,詳細代碼以下:

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”按鈕的事宜處置辦法,向體系剪貼板發送數據。

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

6.編寫“Paste”按鈕的事宜處置辦法,從體系剪貼板取得數據。

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();
}
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved