当前位置: 首页 > news >正文

java.awt.datatransfer.Clipboard剪切板获取String字符串文本

java.awt.datatransfer.Clipboard剪切板获取String字符串文本

有两种方法获取

  • 直接从Clipboard获得

    (String) systemClipboard.getData(DataFlavor.stringFlavor);
    
  • 从Clipboard获得Transable再获得String

    (String) systemClipboard.getContents(null).getTransferData(DataFlavor.stringFlavor);
    

Clipboard 的 getData(DataFlavor flavor) 的源码, java1.5版开始才有

    public Object getData(DataFlavor flavor)throws UnsupportedFlavorException, IOException {if (flavor == null) {throw new NullPointerException("flavor");}Transferable cntnts = getContents(null);if (cntnts == null) {throw new UnsupportedFlavorException(flavor);}return cntnts.getTransferData(flavor);}

包装的获取剪切板文本的方法,没有判断内容是否是String

	public static String getSystemClipboardString(Clipboard systemClipboard) {String result = null;if(systemClipboard==null)systemClipboard=Toolkit.getDefaultToolkit().getSystemClipboard();try {//			result = (String) systemClipboard.getContents(null).getTransferData(DataFlavor.stringFlavor);// ↑都可↓ 下面的getData方法1.5版才有result = (String) systemClipboard.getData(DataFlavor.stringFlavor);} catch (UnsupportedFlavorException | IOException e) {e.printStackTrace();}return result;}public static String getSystemClipboardString() {return getSystemClipboardString(null);}
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;public class AwtClipboard获取剪切板文本的方法 {public static String getSystemClipboardString(Clipboard systemClipboard) {String result = null;if(systemClipboard==null)systemClipboard=Toolkit.getDefaultToolkit().getSystemClipboard();try {//			result = (String) systemClipboard.getContents(null).getTransferData(DataFlavor.stringFlavor);// ↑都可↓ 下面的getData方法1.5版才有result = (String) systemClipboard.getData(DataFlavor.stringFlavor);} catch (UnsupportedFlavorException | IOException e) {e.printStackTrace();}return result;}public static String getSystemClipboardString() {return getSystemClipboardString(null);}public static void main(String...arguments) {System.out.println(getSystemClipboardString());}}

判断剪切板Transferable内容是否是String

  • 方法1, 从clipboard获得transferable, 再用transferable的isDataFlavorSupported(DataFlavor flavor)方法判断
boolean 是否剪切板的内容是文本 = transferable.isDataFlavorSupported(DataFlavor.stringFlavor);
  • 方法2 直接用clipboard的isDataFlavorAvailable(DataFlavor flavor)方法判断 , 该方法1.5版才有
boolean 是否剪切板的内容是文本 = systemClipboard.isDataFlavorAvailable(DataFlavor.stringFlavor);

Clipboard的isDataFlavorAvailable(DataFlavor flavor)方法从1.5版本开始才有, 可以简化代码, 其实质也是获得Transferable实例后调用其isDataFlavorSupported(DataFlavor flavor)方法判断
源码如下

    /*** Returns whether or not the current contents of this clipboard can be* provided in the specified {@code DataFlavor}.** @param  flavor the requested {@code DataFlavor} for the contents* @return {@code true} if the current contents of this clipboard can be*         provided in the specified {@code DataFlavor}; {@code false}*         otherwise* @throws NullPointerException if {@code flavor} is {@code null}* @throws IllegalStateException if this clipboard is currently unavailable* @since 1.5*/public boolean isDataFlavorAvailable(DataFlavor flavor) {if (flavor == null) {throw new NullPointerException("flavor");}Transferable cntnts = getContents(null);if (cntnts == null) {return false;}return cntnts.isDataFlavorSupported(flavor);}

包装的获取剪切板文本的方法,且判断内容是否是String

	public static String getSystemClipboardString(Clipboard systemClipboard) {String result = "剪切板的内容不是字符串文本StringText";if(systemClipboard==null)systemClipboard=Toolkit.getDefaultToolkit().getSystemClipboard();//		boolean 剪切板的内容是文本 = systemClipboard.getContents(null).isDataFlavorSupported(DataFlavor.stringFlavor);boolean 剪切板的内容是文本 = systemClipboard.isDataFlavorAvailable(DataFlavor.stringFlavor); // 1.5版才有if(剪切板的内容是文本) {try {//				result = (String) systemClipboard.getContents(null).getTransferData(DataFlavor.stringFlavor);result = (String) systemClipboard.getData(DataFlavor.stringFlavor); // 1.5版才有} catch (UnsupportedFlavorException | IOException e) {e.printStackTrace();}}return result;}public static String getSystemClipboardString() {return getSystemClipboardString(null);}
package 剪切板复制粘贴;import java.awt.Toolkit;
import java.awt.datatransfer.*;
import java.io.IOException;public class 判断剪切板的内容是文本才获取 {public static String getSystemClipboardString(Clipboard systemClipboard) {String result = "剪切板的内容不是字符串文本StringText";if(systemClipboard==null)systemClipboard=Toolkit.getDefaultToolkit().getSystemClipboard();//		boolean 剪切板的内容是文本 = systemClipboard.getContents(null).isDataFlavorSupported(DataFlavor.stringFlavor);boolean 剪切板的内容是文本 = systemClipboard.isDataFlavorAvailable(DataFlavor.stringFlavor); // 1.5版才有if(剪切板的内容是文本) {try {//				result = (String) systemClipboard.getContents(null).getTransferData(DataFlavor.stringFlavor);result = (String) systemClipboard.getData(DataFlavor.stringFlavor); // 1.5版才有} catch (UnsupportedFlavorException | IOException e) {e.printStackTrace();}}return result;}public static String getSystemClipboardString() {return getSystemClipboardString(null);}public static void main (String...arguments)throws Exception{System.out.println(getSystemClipboardString());}}

相关文章:

java.awt.datatransfer.Clipboard剪切板获取String字符串文本

java.awt.datatransfer.Clipboard剪切板获取String字符串文本 有两种方法获取 直接从Clipboard获得 (String) systemClipboard.getData(DataFlavor.stringFlavor);从Clipboard获得Transable再获得String (String) systemClipboard.getContents(null).getTransferData(DataFlav…...

HCIA——VLAN

目录 1,什么是VLAN: 2,如何实现VLAN: 3,VLAN的划分方式: 4,交换机接口类型: 1,Access接口: 2,Trunk接口:允许将一个接口划分给多…...

测试分析流程及输出项

测试分析 一、确认测试范围 根据测试项目的不同需求,有大致几类测试项目类型:商户平台功能测试、支付方式接入测试、架构调整类测试、后台优化测试、性能测试、基本功能自动化测试。 测试项目需要按照文档要求进行测试需求分析,并给出对应…...

OO设计原则

OO设计原则:SOLID SOLID SRP(The Single Responsibility Principle,单一责任原则) 不应有多于1个的原因使得一个类发生变化一个类,一个责任 OCP(The Open-Closes Principle,开放-封闭原则&…...

《深入理解计算机系统(CSAPP)》第5章 优化程序性能 - 学习笔记

写在前面的话:此系列文章为笔者学习CSAPP时的个人笔记,分享出来与大家学习交流,目录大体与《深入理解计算机系统》书本一致。因是初次预习时写的笔记,在复习回看时发现部分内容存在一些小问题,因时间紧张来不及再次整理…...

【Spring Boot】033-使用 `@ResponseBody` 注解代替`ServletResponse`?

【Spring Boot】033-使用 ResponseBody 注解代替ServletResponse? 文章目录 【Spring Boot】033-使用 ResponseBody 注解代替ServletResponse?0、全局总结一、ResponseBody 注解与 ServletResponse 比较1、ResponseBody 注解2、ServletResponse3、总结 二…...

【openGauss实战13】闪回技术

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…...

Top大学教授:青年学者,请避免这些写作问题→

在科研初期,很多作者由于缺乏经验和指导,糊里糊涂地发了一些质量较低的论文。 为了帮助青年科学家提高写作能力,比利时鲁汶大学的Blocken教授(同时也是Building & Environment、Journal of Wind Engineering & Industrial…...

使用midjourney搞出一套三国人物画像!

当下已进入如火如荼的全民AI时代,最近体验了下midjourney,使用它的以图生图功能生成出来一套三国人物画像,和大家分享下使用心得。 使用midjourney的准备工作 下载工具 使用midjourney生产图片依赖的工具和流程,大致如下&#x…...

ELK日志分析系统

ELK日志分析系统 日志主要包括系统日志/var/log 应用日志 安全日志secure, rsyslog远程传输日志进行汇总集中化管理,日志统计和检索又成为一件比较麻烦的事情,、 1、完整日志系统基本特征 收集:能够采集多种来源的日志数据 …...

整型在内存中的存储

目录 一、为什么内存中存储补码? 二、大小端概念 百度笔试试题: 几道小题: 一、为什么内存中存储补码? 上一节我们了解了原码,反码,补码的概念(http://t.csdn.cn/N0grg)&#xff…...

子集-回溯算法

1题目 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums [1,2,3] 输出:[[],[1],[2],[1…...

公司study three

ctrlwind:新建桌面 ctrlwin 箭头 切换桌面 WIN CTRL F4 删除桌面 stream foreach遍历 instFormModifytracesList.stream().forEach(s->{ s.setModifyUser(sysUserTemplate.getNameById(s.getModifyUser()));});拼接 String collect2 peopleList.stream()…...

【运维】speedtest测试

目录 docker 布署 布署云端 docker布署 云端放置于已有容器里 librespeed/speedtest: Self-hosted Speedtest for HTML5 and more. Easy setup, examples, configurable, mobile friendly. Supports PHP, Node, Multiple servers, and more (github.com) docker 布署 获取…...

CycloneDDS开源代码在Linux系统上编译生成可执行文件的详细步骤

cyclonedds开源代码在Linux系统上编译生成可执行文件的详细步骤 1 远程仓库CycloneDDS源码下载2 创建build目录3 进入build目录4 指定安装路径前缀5 编译 cmake --build6 编译完成后进行安装7 版本构建并编译7.1 虚拟机网络桥接7.2 镜像源添加7.3 CUnit单元测试工具安装7.4 编译…...

PLL锁相环的一部分--鉴频鉴相器

鉴频鉴相器作为锁相环的一部分也是有相对应的独立芯片. 鉴频鉴相器芯片主要有以下几种: LM565/LM565C 鉴频鉴相器芯片XR2211CP 鉴频鉴相器芯片NE567 比较器、鉴频、鉴相 ICMC1496/LM1496 综合运算放大器与调制/解调器 ICLM567 比较器、鉴频、鉴相 ICMC100EP2100 高…...

CSS实现磨砂玻璃(毛玻璃)效果样式

要实现磨砂玻璃背景,可以使用 CSS3 中的 ::before 伪元素和 backdrop-filter 属性,结合 opacity 属性和 blur() 函数来实现。 具体实现步骤如下: 创建一个具有背景的元素,例如一个 div 元素。 div {background-image: url(&quo…...

Solidity拓展:数学运算过程中数据长度溢出的问题

在数学运算过程中假如超过了长度则值会变成该类型的最小值,如果小于了该长度则变成最大值 数据上溢 uint8 numA 255; numA;uint8的定义域为[0,255],现在numA已经到顶了,numA会使num变成0(由于256已经超过定义域,它会越过256&…...

【C语言】经典题目(一)

【C语言】字符串刷题篇在这里哦! 【C语言】字符串—刷题篇 【C】语言经典题目,五个摘录为一篇,将会持续更新啦!💞 C语言经典题目 三位数水仙花数完数求利润三个数数字排序 三位数 💫题目 已知有1、2、3、4…...

Linux 设备树文件手动编译的 shell 脚本

前言 前面通过 Makefile 实现手动编译 Linux 设备树 dts 源文件及其 设备树依赖 dtsi、.h 头文件,如何写成一个 shell 脚本,直接编译呢? 其实就是 把 Makefile 重新编写为 shell 脚本即可 编译设备树 shell 脚本 脚本内容如下&#xff1a…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码&#xff0c;而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库&#xff0c;可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画&#xff0c;可以包含在你的网页或应用项目中。 3.An…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

软件工程 期末复习

瀑布模型&#xff1a;计划 螺旋模型&#xff1a;风险低 原型模型: 用户反馈 喷泉模型:代码复用 高内聚 低耦合&#xff1a;模块内部功能紧密 模块之间依赖程度小 高内聚&#xff1a;指的是一个模块内部的功能应该紧密相关。换句话说&#xff0c;一个模块应当只实现单一的功能…...