我需要用JAVA画图,感激! 请访问 www.sharetop.com 有一个webchart的开源软件,实现了你要的功能,可以参考一下,有什么问题再与我联系,我的msn is [email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转载:如何在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了. 转载:如何在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了. APPLET 可能要让你失望了因为 APPLET 不能存取本地文件除非用数字签名 //给你一个示例。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"); } } to : zhenyang2002(珍阳) 你好!这个例子我在哪个网站上也看到过,好像没试成功。我再试试! 你需要去 SUN 下载一个 JPEG API 或者 imageIO 的包然后就好用了参考http://java.sun.com/products/jdk/1.2/docs/guide/2d/api-jpeg/index.html 谁有jfreechart的中文文档 发一份谢谢 怎样实现模糊查询!! 怎样学java 请大侠给新手一个例子. 一面试题,如下: 关于在自己的applet类中import其他自定义包类的问题? 有人能给讲一下[],set,array,vector,hashtable,hashmap等等的区别吗?我都晕了好长时间了 学生成绩录入与显示(查错) 请教一个线程的问题 安装java时遇到的问题 我的JTree为什么不能显示? 在applet中使用JOptionPane.showMessageDialog(this,"message") 为什么不能弹处?
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了.
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了.
因为 APPLET 不能存取本地文件
除非用数字签名
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");
}
}
然后就好用了参考
http://java.sun.com/products/jdk/1.2/docs/guide/2d/api-jpeg/index.html