Java怎么监听系统剪贴板的变化 ?

问题描述

不是在自己的程序中监听剪贴板的变化 而是系统的使用中发生了剪切复制这类操作Java怎么监听 ? 需要JNI? 还是开个线程每一秒都做一次对比么 ...... 但是这样的话开销就不小了 请大家赐教 问题补充:AngelAndAngel 写道

解决方案

不然要是有这种软件 就天下打乱了。你做什么都可能监听到,那就完咯 呵呵。
解决方案二:
哦 这个东西不能办到,而且是不可能办到的。 而且操作系统是不可能让你这么干的 呵呵 相信我吧兄弟。
解决方案三:
还有 你是用的swing吧。
解决方案四:
看下面代码,ctrl+c /ctrl+v 也可以,你就在复制的时候做你监听的额外工作,比如代码import java.awt.BorderLayout;import java.awt.Toolkit;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.event.ActionEvent;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JTextArea;public class MainFrame extends JFrame { private JPanel jContentPane = null; private JTextArea jTextArea = null; private JPanel jPanel = null; private JButton jButton=new JButton(); private JButton jButton1=new JButton(); Clipboard cd=Toolkit.getDefaultToolkit().getSystemClipboard(); /** * This is the default constructor */ public MainFrame() { super(); initialize(); } /** * This method initializes this * * @return void */ private void initialize() { jButton.setText("COPY"); jButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { jb_actionPerformed(e); } }); jButton1.setText("PASTE"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { jb1_actionPerformed(e); } }); this.setSize(300, 200); this.setContentPane(getJContentPane()); this.setTitle(""HAIT'S CODE""); } protected void jb1_actionPerformed(ActionEvent e) { // TODO Auto-generated method stub try{ Transferable tr=cd.getContents(this); if(tr!=null){ String s=(String)tr.getTransferData(DataFlavor.stringFlavor); if(s!=null) this.jTextArea.insert(s,this.jTextArea.getCaretPosition()); } }catch(Exception err){ err.printStackTrace(); } } protected void jb_actionPerformed(ActionEvent e) { StringSelection ss=new StringSelection(this.jTextArea.getText()); cd.setContents(ss,ss); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (jContentPane == null) { jContentPane = new JPanel(); jContentPane.setLayout(new BorderLayout()); jContentPane.add(getJTextArea(), java.awt.BorderLayout.CENTER); jContentPane.add(getJPanel(), java.awt.BorderLayout.SOUTH); } return jContentPane; } /** * This method initializes jTextArea * * @return javax.swing.JTextArea */ private JTextArea getJTextArea() { if (jTextArea == null) { jTextArea = new JTextArea(); } return jTextArea; } /** * This method initializes jPanel * * @return javax.swing.JPanel */ private JPanel getJPanel() { if (jPanel == null) { jPanel = new JPanel(); jPanel.add(jButton, null); jPanel.add(jButton1, null); } return jPanel; }}
解决方案五:
另外,在CSDN有这么个帖子,你可以参考一下:http://topic.csdn.net/u/20101201/11/cf2d6c26-9e87-4bb9-ad5a-ba899c1e3394.html
解决方案六:
刚才那个没编辑好。引用systemClipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); 获得系统剪贴板对象
解决方案七:
systemClipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); /quote]获得系统剪贴板对象
解决方案八:
JAVA 应该可以获取 系统 剪贴板的,你说的JNI应该由JAVA帮你封装实现了,你可以看看:引用你可以试试使用ClipboardOwner这个接口。 覆盖lostOwnership(Clipboard clipboard,Transferable contents)方法。 这个接口的“注册”很简单,在调用Clipboard对象的setContents(Transferable,ClipboardOwner)方法时,输入第二个参数就行了。 注意:如果你想要一直监视剪贴板就在lostOwnership方法中调用你要监视的剪贴板的setContents方法“注册”自己(指的是ClipboardOwner接口)。 FlavorListenter接口的方法只有在你所复制的内容的风格(DataFlavor)集合变化时才被回调。

时间: 2024-10-29 11:21:58

Java怎么监听系统剪贴板的变化 ?的相关文章

使用xmlhttp和Java session监听改善站内消息系统

session|xml 使用xmlhttp和Java session监听改善站内消息系统 bromon 原创  引自:http://www.javaresearch.org/article/showarticle.jsp?column=106&thread=25340 这个题目含有许多需要解释的概念,最容易说明的是"站内消息",这是很多论坛都有的功能,可以通过web向其他的在线用户发送消息,很多用户都使用过.站内消息的第一个好处是大家都不需要安装客户端,你不用知道对方的MSN或

java程序如何监听系统状态

问题描述 求助:java程序如何监听系统将要休眠.想在系统休眠前做一些操作,知道的回复一下.

java如何监听打印机的内容

问题描述 java如何监听打印机的内容 需求是这样的,想在打印机打印小票之前捕捉小票内容,然后修改小票内容再打印.跪求大神们提供代码,文档,思路等信息,谢谢了 解决方案 我也想知道啊 哪位大神指点一下 解决方案二: java没法做系统一级的,需要c cpp然后给java调用.

java中监听接口里面的onclick方法为什么被称为回调方法

问题描述 java中监听接口里面的onclick方法为什么被称为回调方法 那普通接口有回调方法吗,普通类有回调方法吗, 回调方法是如何定义的 解决方案 你别被回调这个词搞蒙了,其实就是把方法当做参数而已 解决方案二: 因为onclick你定义了,不是自己调用,而是间接由按钮点击后系统类库去调用,所以叫回调. 英文叫做callback. 解决方案三: 回调方法简单的说就是a方法都用b方法,b方法执行过程中需要调用a方法,callback 解决方案四: [个人向]Android回调接口的实现方法ja

JAVA键盘监听,错误在哪里

问题描述 JAVA键盘监听,错误在哪里 解决方案 java 键盘监听java 键盘监听Java:键盘全局监听 解决方案二: http://zhidao.baidu.com/question/577201357.html?qbl=relate_question_0 解决方案三: 编译问题,你这个方法调用参数类型是错误的,键盘监听事件的参数是addKeyListener的参数必须是实现KeyListener这个接口的类. 你的mb类型定义的是JPanel,所以会报编译错误.你需要定义一个类实现Key

事件处理-新手求教大神,java事件监听问题

问题描述 新手求教大神,java事件监听问题 import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JLabel; public class EventModelDemo implements ActionListener{ JLabel tips=new

c++-如何使用钩子函数来监听元器件引脚值变化

问题描述 如何使用钩子函数来监听元器件引脚值变化 做一个类似于Proteus的仿真软件,用C++写,如何检测每个元器件引脚值的变化(老师说用钩子函数),表示看不懂,不会用 ,有没有做过类似软件的大神,求教,谢谢! 解决方案 所谓的钩子函数就是回调函数,在中断检测变化后会触发这个回调,具体要看你用的库 解决方案二: 利用SetHook函数知识,写一个用于处理的回调函数即可

关于java事件监听的问题

问题描述 关于java事件监听的问题 有个登陆按钮 点击后登陆 我想得是按下回车键登陆 但是为什么不能在按键事件监听中调用那个点击事件那 解决方案 java事件监听监听事件问题JAVA监听键盘事件 解决方案二: 给那个按钮设个快捷键,让它在按下回车的时候触发监听事件 解决方案三: 提交按钮和enter按键的功能一样,只是一个是click事件,enter是keypress事件. 解决方案四: 可以在相应的设置中设置为快捷键,然后调用.或者设置shift顺序,调用doClick方法,差不多就是这样了

jquery监听div内容的变化具体实现思路_jquery

我们做电子商务,javascript框架采用的是jQuery,在开发过程中遇到了上面标题列出的问题:如何监听div内容的变化. 先给出最终代码(后续进行相关分析): 复制代码 代码如下: var title = $("b.facility"); var title = $('#title');//the element I want to monitor title.bind('DOMNodeInserted', function(e) { alert('element now con