//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; } } } }