请访问 www.sharetop.com 有一个webchart的开源软件,实现了你要的功能,可以参考一下,有什么问题再与我联系,我的msn is [email protected]

解决方案 »

  1.   

    转载:如何在Java应用程序中实现copy图像功能。    turbochen(原作)  
      
    swing,clipboard,datatransfer 
      
    用Java开发图形应用程序的朋友一定遇到过如何在程序中实现复制图像的功能。在jdk1.4以前,java本身就支持将程序中文字串复制给其它的非java应用程序使用,而将程序中的图像复制到非java应用程序简直难上加难。只到jdk1.4出来,这个问题才得以解决。一般我们开发java application界面,主要用swing图形包。几乎所有的swing控件都是由JComponent继承而来的。如果我们要取得JComponent的图像,可以用以下方式: Rectangle rect = comp.getBounds();
     BufferedImage bufImage = new BufferedImage(rect.width,
               rect.height,
               BufferedImage.TYPE_INT_RGB);
     Graphics g = bufImage.getGraphics();
     g.translate(-rect.x, -rect.y);
     comp.paint(g);
    这样的话,图像就保存到BufferedImage对象当中了。现在来看如何将这个BufferedImage复制到系统clipboard中。要做复制功能,一般是继承TransferHandler类,实现Transferable接口, 这样你的复制内容才能传到系统clipboard,为此我们来写一个ImageSelection类:/**
    * <p>Copyright: Copyright (c) 2002</p>
     * @author Turbo Chen
     * @version 1.00
     */
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.datatransfer.*;
    import javax.swing.*;public class ImageSelection extends TransferHandler
           implements Transferable
    {  private static final DataFlavor flavors[] =
         {DataFlavor.imageFlavor};  private Image image;  public int getSourceActions(JComponent c) {
        return TransferHandler.COPY;
      }  public boolean canImport(JComponent comp, DataFlavor
        flavor[]) {
        for (int i=0, n=flavor.length; i<n; i++) {
          if (flavor[i].equals(flavors[0])) {
            return true;
          }
        }
        return false;
      }//将图像复制到Image对象.  public Transferable createTransferable(JComponent
        comp) {
        // Clear clip
        image = null;
        Icon icon = null;
     Rectangle rect = comp.getBounds();
     BufferedImage bufImage = new BufferedImage(rect.width,
               rect.height,
               BufferedImage.TYPE_INT_RGB);
     Graphics g = bufImage.getGraphics();
      comp.paint(g);    if (bufImage != null ) {
          image = bufImage;
          return this;
        }
        return null;
      }  // Transferable
      public Object getTransferData(DataFlavor flavor) {
        if (isDataFlavorSupported(flavor)) {
          return image;
        }
        return null;
      }  public DataFlavor[] getTransferDataFlavors() {
        return flavors;
      }  public boolean isDataFlavorSupported(DataFlavor
        flavor) {
        return flavor.equals(flavors[0]);
      }
    }
    利用这个类,就可以轻松的将JComponent图像复制到系统clipboard了.怎么使用呢,再来看看下面的代码:    final Clipboard clipboard =
          kit.getSystemClipboard();    Icon icon = new ImageIcon("myphoto.jpg");
        final JLabel label = new JLabel(icon);
        label.setTransferHandler(new ImageSelection());    JButton copy = new JButton("Label Copy");
        copy.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            TransferHandler handler =
              label.getTransferHandler();
            handler.exportToClipboard(label, clipboard,
              TransferHandler.COPY);
          }
        });
    在你的程序中,要有一个JFrame, 加上一个JLabel,一个JButton,将上面的代码加进入,你就可以在你的程序中看到图像如何复制到系统clipboard了. 
      

  2.   

    转载:如何在Java应用程序中实现copy图像功能。    turbochen(原作)  
      
    swing,clipboard,datatransfer 
      
    用Java开发图形应用程序的朋友一定遇到过如何在程序中实现复制图像的功能。在jdk1.4以前,java本身就支持将程序中文字串复制给其它的非java应用程序使用,而将程序中的图像复制到非java应用程序简直难上加难。只到jdk1.4出来,这个问题才得以解决。一般我们开发java application界面,主要用swing图形包。几乎所有的swing控件都是由JComponent继承而来的。如果我们要取得JComponent的图像,可以用以下方式: Rectangle rect = comp.getBounds();
     BufferedImage bufImage = new BufferedImage(rect.width,
               rect.height,
               BufferedImage.TYPE_INT_RGB);
     Graphics g = bufImage.getGraphics();
     g.translate(-rect.x, -rect.y);
     comp.paint(g);
    这样的话,图像就保存到BufferedImage对象当中了。现在来看如何将这个BufferedImage复制到系统clipboard中。要做复制功能,一般是继承TransferHandler类,实现Transferable接口, 这样你的复制内容才能传到系统clipboard,为此我们来写一个ImageSelection类:/**
    * <p>Copyright: Copyright (c) 2002</p>
     * @author Turbo Chen
     * @version 1.00
     */
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.datatransfer.*;
    import javax.swing.*;public class ImageSelection extends TransferHandler
           implements Transferable
    {  private static final DataFlavor flavors[] =
         {DataFlavor.imageFlavor};  private Image image;  public int getSourceActions(JComponent c) {
        return TransferHandler.COPY;
      }  public boolean canImport(JComponent comp, DataFlavor
        flavor[]) {
        for (int i=0, n=flavor.length; i<n; i++) {
          if (flavor[i].equals(flavors[0])) {
            return true;
          }
        }
        return false;
      }//将图像复制到Image对象.  public Transferable createTransferable(JComponent
        comp) {
        // Clear clip
        image = null;
        Icon icon = null;
     Rectangle rect = comp.getBounds();
     BufferedImage bufImage = new BufferedImage(rect.width,
               rect.height,
               BufferedImage.TYPE_INT_RGB);
     Graphics g = bufImage.getGraphics();
      comp.paint(g);    if (bufImage != null ) {
          image = bufImage;
          return this;
        }
        return null;
      }  // Transferable
      public Object getTransferData(DataFlavor flavor) {
        if (isDataFlavorSupported(flavor)) {
          return image;
        }
        return null;
      }  public DataFlavor[] getTransferDataFlavors() {
        return flavors;
      }  public boolean isDataFlavorSupported(DataFlavor
        flavor) {
        return flavor.equals(flavors[0]);
      }
    }
    利用这个类,就可以轻松的将JComponent图像复制到系统clipboard了.怎么使用呢,再来看看下面的代码:    final Clipboard clipboard =
          kit.getSystemClipboard();    Icon icon = new ImageIcon("myphoto.jpg");
        final JLabel label = new JLabel(icon);
        label.setTransferHandler(new ImageSelection());    JButton copy = new JButton("Label Copy");
        copy.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            TransferHandler handler =
              label.getTransferHandler();
            handler.exportToClipboard(label, clipboard,
              TransferHandler.COPY);
          }
        });
    在你的程序中,要有一个JFrame, 加上一个JLabel,一个JButton,将上面的代码加进入,你就可以在你的程序中看到图像如何复制到系统clipboard了. 
      

  3.   

    APPLET 可能要让你失望了
    因为 APPLET 不能存取本地文件
    除非用数字签名
      

  4.   

    //给你一个示例。
    import java.io.*;
    import java.util.*;
    import com.sun.image.codec.jpeg.*;
    import java.awt.image.*;
    import java.awt.*;public class ChartGraphics {
      BufferedImage image;
      public void createImage(String fileLocation) {
        try {
          FileOutputStream fos = new FileOutputStream(fileLocation);
          BufferedOutputStream bos = new BufferedOutputStream(fos);
          JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);
          encoder.encode(image);
          bos.close(); 
        } catch(Exception e) {
          System.out.println(e);
        }
      }  
      
      public void graphicsGeneration() {
      
        final int X=10;
        int imageWidth = 300;//图片的宽度
        int imageHeight = 300;//图片的高度   
        int columnWidth=30;//柱的宽度
        int columnHeight=200;//柱的最大高度
        int h1=100,h2=200,h3=300,h4=400,h5=500;
        
        ChartGraphics chartGraphics = new ChartGraphics();
        chartGraphics.image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB); 
        Graphics graphics = chartGraphics.image.getGraphics();
        graphics.setColor(Color.white);
        graphics.fillRect(0,0,imageWidth,imageHeight);    
        graphics.setColor(Color.red);
        graphics.drawRect(X+1*columnWidth, columnHeight-h1, columnWidth, h1);
        graphics.drawRect(X+2*columnWidth, columnHeight-h2, columnWidth, h2);
        graphics.drawRect(X+3*columnWidth, columnHeight-h3, columnWidth, h3);    
        graphics.drawRect(X+4*columnWidth, columnHeight-h4, columnWidth, h4);
        graphics.drawRect(X+5*columnWidth, columnHeight-h5, columnWidth, h5);    
        chartGraphics.createImage("E:\\resin211\\doc\\chart\\chart.jpg");
      } 
    }
      

  5.   

    to : zhenyang2002(珍阳)     你好!这个例子我在哪个网站上也看到过,好像没试成功。我再试试!
      

  6.   

    你需要去 SUN 下载一个 JPEG API 或者 imageIO 的包
    然后就好用了参考
    http://java.sun.com/products/jdk/1.2/docs/guide/2d/api-jpeg/index.html