- 浏览: 83780 次
- 性别:
文章分类
最新评论
-
lovewendy:
...
Android绘制折线图 -
qiao522600806:
myf408 写道我运行了,怎么报错啊,报错如下:04-24 ...
Android绘制折线图 -
qiao522600806:
看看
Android绘制折线图 -
king_tt:
垃圾。运行不了,报错。
Android绘制折线图 -
贾叔叔:
很好用,感谢楼主分享。7楼不知道遇到的什么问题,把他弄得这么生 ...
Android绘制折线图
众所周知,这个包主要是与系统剪切板相关的的软件包(还有就是与JFC里的拖曳编程相关),这个包的核心类当然是Clipborad类(个人认为),这个
类我们就看成是一个剪切板,它具有储存的内容,我们可以取得和设置它的内容.它的内容被封装在Transferable里,我们最终要取得的数据,就是在
它里面.说到Transferable接口,我不得不提一下StringSelection类,这个类就是它的一个实现,专门用来向剪切板传输文本数据
的.为什么要叫StringSelection,我想因为平时我们把文本复制到剪切板的时候,这些文本都是被选择好的,所以就会取个这个类名吧.呵
呵~~~当我们用StringSelection向Clipborad传输文本数据的时候,我们剪切板的Transferable数据就可以是一个
StringSelection对象.像这样:
StringSelection ss=new StringSelection("放入剪切板的文本");
clipboardobj.setContents(ss,ss);//两个参数都是ss,因为StringSelection既是Transferable,也是ClipboardOwner.
DataFlavor表示的是存储数据的格式,因为我们的剪切板里到底是文本,图像,还是上次复制的文件我们根本不知道,幸好有它让我们可以先知道Clipboard里存的是些什么东西.
一个剪切板还可以加入数据改变的监听器,当剪切板的数据改变时做一些操作.这主要是在Clipboard里加入监听即可.
package cn.sisy.awt; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; public class CopyStringToClipboard { public static void main(String[] args) { String str = "a string for copy"; Toolkit toolkit = Toolkit.getDefaultToolkit(); Clipboard clipboard = toolkit.getSystemClipboard(); StringSelection strSel = new StringSelection(str); clipboard.setContents(strSel, null); if(clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor)){ try { String content = (String) clipboard.getData(DataFlavor.stringFlavor); System.out.println(content); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
已复制如下:
下面看看图片如何复制:
实现自定义的ImageSelection类用于支持图片的复制:
package cn.sisy.awt; import java.awt.*; import java.awt.datatransfer.*; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; public class ImageSelection implements Transferable { private Image image; public ImageSelection(Image image) { this.image = image; } @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[]{DataFlavor.imageFlavor}; } @Override public boolean isDataFlavorSupported(DataFlavor flavor) { // TODO Auto-generated method stub return flavor.equals(DataFlavor.imageFlavor); } @Override public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if(flavor.equals(DataFlavor.imageFlavor)){ return image; }else{ throw new UnsupportedFlavorException(flavor); } } }
实现类CopyImage
package cn.sisy.awt; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.List; public class CopyImage { private Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); private final int AREA_WIDTH = 400; private final int AREA_HEIGHT = 400; private int preX = -1; private int preY = -1; BufferedImage image = new BufferedImage(AREA_WIDTH, AREA_HEIGHT, BufferedImage.TYPE_INT_RGB); java.util.List<Image> imageList = new java.util.ArrayList<Image>(); Graphics g = image.getGraphics(); private Frame f = new Frame("图形复制程序"); private MyCanvas myCanvas = new MyCanvas(); private Color foreColor = new Color(255,0,0); private Button copy = new Button("复制"); private Button paste = new Button("粘贴"); public void init(){ g.fillRect(0, 0, AREA_WIDTH, AREA_HEIGHT); myCanvas.setPreferredSize(new Dimension(AREA_WIDTH, AREA_HEIGHT)); myCanvas.addMouseMotionListener(new MouseAdapter() { public void mouseDragged(MouseEvent e){ preX = e.getX(); preY = e.getY(); if(preX > 0 && preY > 0){ g.setColor(foreColor); g.drawLine(preX,preY,e.getX(),e.getY()); } myCanvas.repaint(); } }); myCanvas.addMouseListener(new MouseAdapter(){ public void mouseReleased(MouseEvent e){ preX = -1; preY = -1; } }); f.add(myCanvas); Panel p = new Panel(); copy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ImageSelection contents = new ImageSelection(image); clipboard.setContents(contents, null); } }); paste.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(clipboard.isDataFlavorAvailable(DataFlavor.imageFlavor)){ try { imageList.add((Image)clipboard.getData(DataFlavor.imageFlavor)); myCanvas.repaint(); } catch (Exception e1) { e1.printStackTrace(); } } } }); p.add(copy); p.add(paste); f.add(p,BorderLayout.SOUTH); f.pack(); f.setVisible(true); } public static void main(String[] args) { new CopyImage().init(); } class MyCanvas extends Canvas{ @Override public void paint(Graphics g) { g.drawImage(image,0,0,null); System.out.println(imageList.size()); for(Image img : imageList){ g.drawImage(img,0,0,null); } } } }
发表评论
-
Java网络编程-More
2012-10-13 14:34 756代码来源:《疯狂Java讲义》 ... -
网络编程
2012-10-13 13:59 754------------------------------ ... -
ImageIO读取位图显示在Frame中
2012-10-01 09:14 869package cn.sisy.awt; import ja ... -
Java的Image抽象类与BufferedImage实现类
2012-10-01 01:03 2180代码一串&&执行流程 package c ... -
Java中三个与绘图有关的方法
2012-09-30 19:12 1528Component 类下的三个与绘 ... -
==以及equals的学习
2012-09-29 23:02 0相等性的比较(==) 1) 对于原生数据类型来说,比较的是 ... -
Java中的access modifier及instanceof运算符
2012-09-30 10:40 834访问修饰符(access modifier) 1) pub ... -
static其它
2012-09-29 19:39 6621. static代码块:静态代码块。 静态代码块的作用也是 ... -
final关键字
2012-09-29 19:32 663final关键字可以修饰属性、方法、类。 final ... -
Static关键字
2012-09-29 12:10 891风中叶 写道 static修饰属性:无论一个类生成了多少个对 ... -
Java构造器及几个基本概念
2012-09-29 11:58 1028关于构造器 carey-pro 写道 1)jav ... -
流程控制---读书笔记
2012-09-29 11:40 693顺序:从上之下,无判 ... -
抽象类与接口
2012-09-28 18:03 735抽象类视频学习代码记录: 首先定义一个抽象类及两个实现类 ... -
Java与多态
2012-09-28 16:57 786多态:所谓多态,就是父类型的引用可以指向子类型的对象,或者接口 ... -
继承与重写
2012-09-28 11:33 650重写其实是继承的范畴内的一个概念, 为了说明这两个概念,我们 ... -
关于java变量的几个概念
2012-08-10 11:32 733成员变量:指类范围内 ... -
Java中如何使用数组?
2012-08-10 09:16 721一:定义一个数组 type[] arrayName; 二: ... -
Java抽象类、接口简单小结
2012-01-05 15:02 857一、抽象类 package cn.oo; public ... -
finally里的语句一定会执行吗?
2011-12-11 16:06 3570前几天去面试,其中有两道面试题。如下 一:finall ... -
String与==
2011-10-18 21:19 0public class TestString{ publ ...
相关推荐
Java剪贴板API是跨平台的,这意味着在Windows、Mac OS X和Linux等不同操作系统上,你的剪贴板操作将保持一致。 通过这些知识点,开发者可以轻松地在Java程序中实现剪贴板功能,使得数据交换变得更加便捷。在实际...
Java剪贴板演示程序是基于Java编程语言设计的一个实用示例,主要目的是向开发者展示如何在Java中实现复制和粘贴的功能。这个程序允许用户监控剪贴板的实时状态,并通过点击界面按钮来执行常见的复制和粘贴操作。在...
Java剪贴板功能的使用相对简单,但理解其背后的工作原理对于开发高效、用户友好的应用程序至关重要。通过掌握剪贴板API的使用,开发者可以轻松地在自己的程序中加入剪切、复制和粘贴功能,从而极大地提高应用的交互...
这样的程序可以帮助开发者更好地理解Java剪贴板机制,并在自己的项目中灵活运用。 总之,Java的剪贴板功能使得程序间的数据交换变得简单易行。通过`Toolkit`和`Clipboard`类,我们可以轻松地将数据放入剪贴板,以及...
Java利用剪贴板交换程序间数据,这个例实现了Java 程序与所在系统的剪贴板的数据交流,,当单击“Paste” 按钮后,Java 程序从系统剪贴板中取得数据并显示在一个JTextArea 组件中;当单击“Copy”按钮后,文本区...
【标题解析】:“java写字板程序代码”表明这是一个使用Java编程语言实现的简易文本编辑器,通常这样的程序会提供基本的文字输入、编辑和格式化功能,类似于Windows操作系统中的“记事本”。 【描述分析】:“一个...
Java截屏保存系统剪切板是一项实用的技术,它允许用户通过编程方式截取屏幕快照,并将该图像存储到系统剪贴板中,以便于后续的复制和粘贴操作。这项技术主要基于Java的标准版(Java SE)环境,利用了Java的AWT和...
Java 剪贴板 数据交换的例子,实现了Java 程序与所在系统的剪贴板的数据交流,,当单击“Paste” ,按钮后,Java 程序从系统剪贴板中取得数据并显示在一个JTextArea 组件中;当单击“Copy”按钮后,文本区中的选中...
编辑功能的实现通常依赖于Java的剪贴板系统,通过`Clipboard`接口可以实现文本的复制、剪切和粘贴。在代码中,我们实例化了一个剪贴板对象`clipbd`,并在需要时获取或设置其内容。 此外,程序可能还需要包含对文本...
1. **Clipboard**:表示系统的剪贴板,用于存储临时数据,这些数据可以被其他应用程序访问。 2. **ClipboardOwner**:这是一个接口,用于定义剪贴板所有者的行为。当剪贴板内容发生改变时,所有者将被通知。 3. **...
【标题】:“java写的写字板程序” 这个标题表明我们讨论的是一个使用Java编程语言实现的类似Windows写字板的应用程序。写字板是操作系统中常见的文本编辑工具,它允许用户创建、编辑和保存简单的文本文件,而这个...
在Android开发中,剪贴板(Clipboard)是一个重要的功能组件,它允许应用程序之间共享文本、图片等数据。Java是Android开发的主要编程语言,因此编写一个Java demo来监听剪贴板的变化,可以帮助开发者检测用户是否在...
通过上述内容,我们可以看到Java提供了非常灵活且强大的剪切板操作API,使得开发人员能够在应用程序中轻松地实现与剪切板相关的功能。无论是读取还是写入剪切板,都只需要几行代码即可完成,极大地提升了开发效率。
"基于剪切板的多线程程序"是一个很好的学习实例,它结合了操作系统中的剪切板功能与多线程概念。下面我们将深入探讨这两个核心知识点。 首先,我们来了解剪切板。剪切板是操作系统提供的一种临时存储数据的区域,...
java代码-使用java制作一个简单的剪贴板程序的源代码 ——学习参考资料:仅用于个人学习使用!
【标题】:“华科java程序设计-简易写字板程序设计” 在计算机科学领域,Java是一种广泛应用的编程语言,尤其在教育环境中,它被广泛用于教授基础的编程概念和软件开发。"华科java程序设计"可能指的是华中科技大学...
剪贴板操作通常包括复制、剪切、粘贴和清除,它们都是通过操作系统提供的API(应用程序接口)来实现的。 2. **Windows平台下的剪贴板操作** 在Windows系统中,我们可以使用Win32 API来访问剪贴板。例如,在C++中,...
【Java写字板程序实验】是一项综合性的实验任务,旨在让学生运用Java编程语言设计一个简易的写字板软件。这个实验主要涵盖了面向对象编程的基本概念和Java编程技巧,同时也强调了程序的可维护性和可扩展性。实验的...
在iOS和Android开发中,剪切板是一种常用的数据交换机制,允许用户或应用程序在不同的界面之间复制和粘贴文本、图片、URL等信息。这里我们将深入探讨iOS的剪切板操作以及Android中通过Java实现剪切板功能的方法。 ...
复制粘贴功能通常需要实现剪贴板API。Java中的java.awt.datatransfer包提供了Clipboard接口和Transferable接口,可以实现程序内部或者与其他应用程序之间的数据交换。 图片操作可能涉及ImageIcon类,它可以加载并...