在JavaFX应用开发中,实现字符串内容复制到系统剪贴板的功能是非常常见的需求,比如用户点击按钮复制文本内容、复制生成的配置信息等场景都需要用到这个功能。JavaFX提供了专门的剪贴板相关API,开发者可以通过简单的代码逻辑完成操作。
核心类说明
JavaFX中操作剪贴板主要用到两个核心类,分别是Clipboard和ClipboardContent,下面分别介绍这两个类的作用:
- Clipboard:代表系统剪贴板,是单例对象,通过
Clipboard.getSystemClipboard()方法获取实例,负责承载剪贴板中的内容。 - ClipboardContent:用于存储要放入剪贴板的内容,支持多种数据类型,比如字符串、文件、图片等,这里我们只需要使用它存储字符串即可。
完整实现步骤
步骤1:获取系统剪贴板实例
首先通过Clipboard的静态方法获取当前系统的剪贴板对象,这个对象是全局唯一的,不需要手动创建。
步骤2:创建ClipboardContent对象并存入字符串
实例化ClipboardContent对象,调用它的putString方法,将要复制的字符串作为参数传入,完成内容的封装。
步骤3:将内容设置到剪贴板
调用剪贴板实例的setContent方法,把封装好的ClipboardContent对象传入,此时指定的字符串就已经被复制到系统剪贴板中了。
完整代码示例
下面是一个完整的JavaFX示例,包含一个按钮,点击按钮就会将指定字符串复制到系统剪贴板,同时弹出提示告知用户操作结果:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.input.Clipboard;
import javafx.scene.input.ClipboardContent;
public class ClipboardCopyDemo extends Application {
@Override
public void start(Stage primaryStage) {
// 要复制的目标字符串
String targetString = "这是要复制到剪贴板的测试内容";
// 创建复制按钮
Button copyButton = new Button("点击复制字符串到剪贴板");
copyButton.setOnAction(event -> {
// 获取系统剪贴板实例
Clipboard clipboard = Clipboard.getSystemClipboard();
// 创建剪贴板内容对象
ClipboardContent content = new ClipboardContent();
// 将目标字符串放入内容对象
content.putString(targetString);
// 将内容设置到剪贴板
clipboard.setContent(content);
// 弹出提示告知用户操作成功
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("操作提示");
alert.setHeaderText(null);
alert.setContentText("字符串已成功复制到系统剪贴板");
alert.showAndWait();
});
VBox root = new VBox(20);
root.getChildren().add(copyButton);
Scene scene = new Scene(root, 400, 300);
primaryStage.setTitle("JavaFX剪贴板复制示例");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
注意事项
- 复制操作需要在JavaFX应用线程中执行,上面的示例中按钮的事件处理本身就在应用线程中,所以不需要额外处理线程问题,如果是其他异步场景需要注意线程切换。
- 如果需要验证复制是否成功,可以调用剪贴板实例的
getString()方法获取当前剪贴板中的字符串内容进行校验。 - 剪贴板内容是全局的,复制到剪贴板的内容可以被其他应用直接粘贴使用,和其他系统应用的剪贴板数据是互通的。
JavaFX系统剪贴板字符串复制ClipboardClipboardContent修改时间:2026-07-24 00:03:51