当前位置: 首页 > 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…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解:从决策树开始理解三、解法一:二叉决策树 DFS四、解法二:组合式回溯写法(推荐)五、解法对比 递归算法是编程中一种非常强大且常见的思想,它能够优雅地解决很多复杂的…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...

6.计算机网络核心知识点精要手册

计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...

C++11 constexpr和字面类型:从入门到精通

文章目录 引言一、constexpr的基本概念与使用1.1 constexpr的定义与作用1.2 constexpr变量1.3 constexpr函数1.4 constexpr在类构造函数中的应用1.5 constexpr的优势 二、字面类型的基本概念与使用2.1 字面类型的定义与作用2.2 字面类型的应用场景2.2.1 常量定义2.2.2 模板参数…...

RLHF vs RLVR:对齐学习中的两种强化方式详解

在语言模型对齐(alignment)中,强化学习(RL)是一种重要的策略。而其中两种典型形式——RLHF(Reinforcement Learning with Human Feedback) 与 RLVR(Reinforcement Learning with Ver…...