//EJEMPLO DE COPIAR Y PEGAR
import java.awt.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.datatransfer.*;
import java.util.*;
import java.io.*;
public class ClipTextApp extends Frame {
Font defaultFont = new Font("default",Font.PLAIN,12);
int screenWidth = 400;
int screenHeight = 400;
Toolkit toolkit;
int baseline;
int lineSize;
FontMetrics fm;
Canvas canvas = new MyCanvas();
Vector text = new Vector();
int topLine;
public static void main(String args[]){
ClipTextApp app = new ClipTextApp();
}
public ClipTextApp() {
super("ClipTextApp");
setup();
setSize(screenWidth,screenHeight);
addWindowListener(new WindowEventHandler());
show();
}
void setup() {
setupMenuBar();
setupFontData();
text.addElement("");
add("Center",canvas);
}
void setupMenuBar() {
MenuBar menuBar = new MenuBar();
Menu fileMenu = new Menu("File");
Menu editMenu = new Menu("Edit");
MenuItem fileExit = new MenuItem("Exit");
MenuItem editCopy = new MenuItem("Copy");
MenuItem editPaste = new MenuItem("Paste");
fileExit.addActionListener(new MenuItemHandler());
editCopy.addActionListener(new MenuItemHandler());
editPaste.addActionListener(new MenuItemHandler());
fileMenu.add(fileExit);
editMenu.add(editCopy);
editMenu.add(editPaste);
menuBar.add(fileMenu);
menuBar.add(editMenu);
setMenuBar(menuBar);
}
void setupFontData() {
setFont(defaultFont);
toolkit = getToolkit();
fm = toolkit.getFontMetrics(defaultFont);
baseline = fm.getLeading()+fm.getAscent();
lineSize = fm.getHeight();
}
public void paint(Graphics g) {
canvas.repaint();
}
void copyToClipboard() {
String toClipboard="Hello from Java!";
StringSelection ss = new StringSelection(toClipboard);
Clipboard clip=toolkit.getSystemClipboard();
clip.setContents(ss,ss);
}
void pasteFromClipboard() {
Clipboard clip=toolkit.getSystemClipboard();
Transferable contents=clip.getContents(ClipTextApp.this);
text.removeAllElements();
if(contents==null) text.addElement("The clipboard is empty.");
else{
if(contents.isDataFlavorSupported(DataFlavor.stringFlavor)){
try{
String data = (String) contents.getTransferData(
DataFlavor.stringFlavor);
if(data==null) text.addElement("null");
else{
StringTokenizer st = new StringTokenizer(data,"\n");
while(st.hasMoreElements()) text.addElement(st.nextToken());
}
} catch(IOException ex){
text.addElement("IOException");
} catch(UnsupportedFlavorException ex){
text.addElement("UnsupportedFlavorException");
}
}else text.addElement("Wrong flavor.");
}
repaint();
}
class MenuItemHandler implements ActionListener {
public void actionPerformed(ActionEvent ev){
String s=ev.getActionCommand();
if(s=="Exit"){
System.exit(0);
}else if(s=="Copy") copyToClipboard();
else if(s=="Paste") pasteFromClipboard();
}
}
class WindowEventHandler extends WindowAdapter {
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class MyCanvas extends Canvas {
public void paint(Graphics g) {
topLine = 0;
int numLines = text.size();
screenHeight = getSize().height;
int y = baseline*2;
int x = y;
for(int i = topLine;(i < numLines) && (y < screenHeight + lineSize);++i) {
g.drawString((String) text.elementAt(i),x,y);
y += lineSize;
}
}
}
}