Image on System Clipboard
I am trying to put image on the SystemClipboard and paste it to another application (e.g. MSWord).
Transferable object ( the object that contains Image) is
set on the Clipboard all right.
(I am using Clipboard
clip=Toolkit.getDefaultToolkit).getSystemClipboard();)
However,actual System Clipboard is empty.
I am using jdk 1.3 on WindowsNT.
My question, is it supported functionality on jdk1.3 and I am doing something wrong or it is a known problem.
Thank you.
Leo
[544 byte] By [
leoasin] at [2007-9-26 2:49:51]

hi,
here is the code sample, that works fine.
******************************************
From.java
******************************************
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
public class From extends Frame implements ClipboardOwner, ActionListener {
Clipboard sysboard = getToolkit().getSystemClipboard();
TextArea txt;
Button copy;
String dataToCopy;
public static void main(String args[]){
From myFrame=new From();
myFrame.setSize(300,280);
myFrame.setTitle("From");
myFrame.show();
}
public From() {
GridBagLayout g=new GridBagLayout();
GridBagConstraints c=new GridBagConstraints();
setLayout(g);
txt=new TextArea(10,25);
copy=new Button("Copy");
c.gridx=0;
c.gridy=0;
c.gridwidth=3;
g.setConstraints(txt,c);
add(txt);
c.gridx=2;
c.gridy=1;
c.gridwidth=1;
g.setConstraints(copy,c);
add(copy);
copy.addActionListener(this);
validate();
}
public void actionPerformed(ActionEvent e){
Object source=e.getSource();
if(source instanceof Button){
StringSelection transferData;
dataToCopy=txt.getText();
if(dataToCopy!=null) {
transferData=new StringSelection(dataToCopy);
sysboard.setContents(transferData,this);
}
}
}
public void lostOwnership(Clipboard clipboard,Transferable contents) {
}
}
*****************************************
*****************************************
To.java
******************************************
import java.awt.*;
import java.awt.event.*;
import java.awt.datatransfer.*;
public class To extends Frame implements ActionListener {
Clipboard sysboard=getToolkit().getSystemClipboard();
TextArea txt;
Button paste;
public static void main(String args[]){
To myFrame=new To();
myFrame.setSize(300,280);
myFrame.setTitle("To");
myFrame.show();
}
public To() {
GridBagLayout g=new GridBagLayout();
GridBagConstraints c=new GridBagConstraints();
setLayout(g);
txt=new TextArea(10,25);
paste=new Button("Paste");
c.gridx=0;
c.gridy=0;
c.gridwidth=3;
g.setConstraints(txt,c);
add(txt);
c.gridx=2;
c.gridy=1;
c.gridwidth=1;
g.setConstraints(paste,c);
add(paste);
paste.addActionListener(this);
validate();
}
public void actionPerformed(ActionEvent e) {
String textCopied;
Transferable transferData;
Object source=e.getSource();
if(source instanceof Button) {
transferData=sysboard.getContents(this);
if(transferData!=null) {
try {
textCopied=(String)transferData.getTransferData(DataFlavor.stringFlavor);
txt.append(textCopied);
} catch(Exception ex) {
System.out.println("Error in getting contents from ClipBoard");
}
}
}
}
}
******************************************
Run both and try them out.