返回

南京达内教育

怎么在Java应用程序中实现copy图像功能

java学习网更新时间:2021-10-07 浏览:176

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类:

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

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技术有哪些优点优势
2021-07-15 371
Java技术性有以下优势:简易、面向对象编程、分布式系统、表述实行、鲁棒性、安全性、系统架构保持中立、生命期、性能卓越、线程同步及其动态...
c++ vector 使用效率问题
2021-07-15 370
1. vector中的erase方式 高效率是很低。由于为了更好地维持vector中原素在存储空间中的持续性,在删掉某一原素以后,*将之后...
Java未来发展的趋势
2021-06-15 367
没有Java,甚至不会有大数据的大发展,Hadoop本身就是用Java编写的。当你需要在运行MapReduce的服务器集群上发布新功能时,你需...
初学者适合学习哪些编程语言
2021-07-15 354
许多同学想改行程序编写,可是那么多的计算机语言究竟该怎么选呢?头痛~如果你是一名具备创新性的开发人员或是想变成一名具备展望工作能力的开发人员得话,那麼,你应该最少在**是的计算机语言中挑选一个,相近 Python, JavaScript, C#, C++, PHP, Java, 或是 go...
云计算技术与应用学什么东西
2021-07-16 343
云计算技术与应用是学什么的?众所周知,云计算技术是当前的热门技术, 云计算专*技*人才是香饽饽,计划学习云计算技术与应用...
学Java可以做哪些职位
2021-06-11 323
Java是时下非常流行的语言,这意味着有很多很多不同的工作可供选择。Java软件工程师入行1-3年,*已达到10-15万,而且在IT行业...
学什么技术有前途 Java怎么样
2021-07-19 305
如今正是互联网信息时代,随着时代的变迁肯定会发展的越来越好,而Java编程语言是最于我们生活息息相关的,用处范围广泛,比如:...
JAVA基础课程学习知识点有哪些
2021-06-24 286
步骤一:学习 JAVA 的开发环境配置、开发 Java 程序。也建议大家开始使用eclipse 等 IDE,不必纠结是不是一定要从记事本开始。...

相关课程

栏目导航