我毕业设计做一个游戏,大部分完成了,有一个附加功能我不会,就是把绘图区(下面的board,一个继承了JPanel的内部类)截图,然后保存到粘贴板。我写好了截图了,粘贴板就不知道怎么处理了。网上有这样的大概的方法介绍,但我不会应用到我这里,人家写的太复杂了。希望有人能告诉我,如果能把代码填完更好,万分感谢。
   JMenuItem copyimageItem=new JMenuItem("复制为图片");  //菜单项
   copyimageItem.addActionListener(new ActionListener(){  //菜单事件
 
   public void actionPerformed(ActionEvent e){
   Toolkit toolKit=Toolkit.getDefaultToolkit();
   Clipboard clipBoard=toolKit.getSystemClipboard();
Point p=board.getLocationOnScreen(); //board是一个画图的JPanel.
Dimension d=board.getSize();  
     Rectangle re= new   Rectangle(p,d); //board 的屏幕的绝对位置    try {
      BufferedImage buffereImage = (new Robot()) .createScreenCapture(re);       //截图
     
   // 把截图保存到粘贴板 ,这里我不会了。   
      
 
      
    }
    catch (AWTException ex) {
    }         }
       });

解决方案 »

  1.   

    需要先写一个实现Transferable接口的ImageSelection,如下:
    import java.awt.*;   
    import java.awt.datatransfer.*;    
        
    public class ImageSelection implements Transferable
    {
    private Image img; public ImageSelection(Image img)
    {
    this.img = img;  
    }

    public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
    if (flavor.equals(DataFlavor.imageFlavor)) {
    return img;
    }
    else {
    throw new UnsupportedFlavorException(flavor);
    }
    } public DataFlavor[] getTransferDataFlavors() {
    return new DataFlavor[]{DataFlavor.imageFlavor};
    } public boolean isDataFlavorSupported(DataFlavor flavor) {
    return flavor.equals(DataFlavor.imageFlavor); 
    }
    }
    再在你上面的代码中加入:
    Clipboard clipboard=Toolkit.getDefaultToolkit().getSystemClipboard();   
    ImageSelection selection = new ImageSelection(bi); 
    clipboard.setContents(selection, null);