import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
import javax.swing.*;
//剪貼簿示範
public class ClipboardDemo extends JFrame implements ClipboardOwner{
Clipboard clipboard; //剪貼簿
JTextArea jtaCopyTo=new JTextArea(5,10); //用於拷貝的文字框
JTextArea jtaPaste=new JTextArea(5,10); //用於粘貼的文字框
public ClipboardDemo(){
super("使用剪貼簿的複製/粘貼程式"); //調用父類建構函式
clipboard=Toolkit.getDefaultToolkit().getSystemClipboard(); //獲得系統剪貼簿
JButton btCopy=new JButton("拷貝"); //拷貝按鈕
JButton btPaste=new JButton("粘貼"); //粘貼按鈕
jtaCopyTo.setLineWrap(true); //設定換行
jtaPaste.setLineWrap(true);
jtaCopyTo.setBorder(BorderFactory.createTitledBorder("複製到系統剪下板")); //設定邊界
jtaPaste.setBorder(BorderFactory.createTitledBorder("從系統剪下板粘貼"));
Container container=getContentPane(); //得到容器
JToolBar toolBar=new JToolBar(); //執行個體化工具列
toolBar.add(btCopy); //增加工具列按鈕
toolBar.add(btPaste);
btCopy.addActionListener(new CopyListener()); //按鈕事件處理
btPaste.addActionListener(new PasteListener());
Box box=new Box(BoxLayout.X_AXIS); //執行個體化Box
box.add(jtaCopyTo); //增加文字框到Box上
box.add(jtaPaste);
container.add(toolBar,BorderLayout.NORTH); //增加工具列到容器
container.add(box,BorderLayout.CENTER); //增加Box到容器
setSize(320,180); //設定視窗尺寸
setVisible(true); //設定視窗為可視
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //關閉視窗時退出程式
}
class CopyListener implements ActionListener { //拷貝資料處理
public void actionPerformed(ActionEvent event) {
StringSelection contents=new StringSelection(jtaCopyTo.getText()); //用拷貝文字框文本執行個體化StringSelection對象
clipboard.setContents(contents, ClipboardDemo.this); //設定系統剪貼簿內容
}
}
class PasteListener implements ActionListener { //粘貼資料處理
public void actionPerformed(ActionEvent event) {
Transferable contents=clipboard.getContents(this); //得到剪貼簿內容
if(contents!=null && contents.isDataFlavorSupported(DataFlavor.stringFlavor)) { //判斷內容是否為空白,是否為字串
try{
String string= (String) contents.getTransferData(DataFlavor.stringFlavor); //轉換內容到字串
jtaPaste.append(string); //插入字串到粘貼文字框
}catch (Exception ex){
ex.printStackTrace(); //錯誤處理
}
}
}
}
public void lostOwnership(Clipboard clip,Transferable transferable) { //實現ClipboardOwner介面中的方法
}
public static void main(String[] args){
new ClipboardDemo();
}
}