Java Clipboard操作系统剪切板的问题

郭梧悠
领域专家: 移动开发技术领域
2013-05-01 09:59:12
代码如下
FlavorListener f = new FlavorListener(){

@Override
public void flavorsChanged(FlavorEvent e) {


// 获得系统剪切板内容
Transferable contents = clipboard.getContents(null);
ClipBoard.this.lostOwnership(clipboard, contents);

// 如果非空且为字符串
if (contents != null
&& contents.isDataFlavorSupported(DataFlavor.stringFlavor)) {
try {
// 把内容转换为字符串
String string = (String) contents
.getTransferData(DataFlavor.stringFlavor);
System.out.println(string);
//检测复制的内容是否是以Http开头
if(string.startsWith("http")||string.startsWith("HTTP")){

System.out.println(string + "?????????");
///获得选择的文本化对象
//打开新建窗口
NewTaskFrame newTaskFrame = mainFrame.getNewTaskFrame();
newTaskFrame.setVisible(true);
//把复制的url放入新建窗口
newTaskFrame.getAddress().setText(string);

}


} catch (Exception ex) {
ex.printStackTrace();
}
}// end if
}

};
clipboard.addFlavorListener(f);


我想要的实现的功能就是如果系统剪切板的内容发生变化会得到相应的通知,比如先在一个文本中复制一段文字,然后有在另一端文本中选择并复制了一段文字,通过调用flavorsChanged(FlavorEvent e)方法来实现相关的逻辑。
但是这个代码好像有些问题:比如,我现在浏览器中随便复制了一段内容,(没有进行粘贴操作) ,然后在word里面又复制了一段内容,这样剪切板的内容就发生了变化,就会调用flavorsChanged(FlavorEvent )方法;问题是,如果我在同一个word里面先复制一段文字,然后在复制另一段文字的时候,这个方法就不会调用了,在同一个浏览器中进行两次右键复制操作也不会调用。这是什么情况?
网上搜了好多信息,得不到解决,整了半天了
...全文
380 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
郭梧悠 2013-05-02
  • 打赏
  • 举报
回复
public String getURL(){
		// 获得系统剪切板内容
		Transferable contents = clipboard.getContents(null);
		String url = null;
		// 如果非空且为字符串
		if (contents != null
				&& contents.isDataFlavorSupported(DataFlavor.stringFlavor)) {
			try {
				// 把内容转换为字符串
				url = (String) contents 
						.getTransferData(DataFlavor.stringFlavor);
				if(isURL(url)){
					return url;
				}	
				
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}// end if
		clipboard.setContents(null, null);
		return null;
	}
还有这段代码 每当我添加clipboard.setContents(null,null)时就会报空指针错误,怎么回事呢
郭梧悠 2013-05-02
  • 打赏
  • 举报
回复
还有,就是怎么清空剪切的内容
郭梧悠 2013-05-02
  • 打赏
  • 举报
回复
引用 1 楼 shine333 的回复:
这个真的没什么好办法
呃,好吧
shine333 2013-05-02
  • 打赏
  • 举报
回复
设置成空字符串吧
shine333 2013-05-01
  • 打赏
  • 举报
回复
这个真的没什么好办法

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧