当前位置: 首页 > 面试题库 >

剪贴板内容更改时调用方法

桂德义
2023-03-14
问题内容

我正在尝试制作一个小的桌面应用程序,该应用程序应显示剪贴板的内容(如果它是字符串)。我已经完成了一个构造函数,并且构造函数运行良好,现在,我只想在将文本复制到OS的剪贴板中时调用类似的方法。我对此很陌生,因此不胜感激!告诉我应该以某种方式使用中断…

package pasty;

import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class PastyFrame implements KeyListener {

    String currentClipboardString;
    JLabel clipboardLabel = new JLabel();

    public PastyFrame() {
        JFrame frame = new JFrame();
        frame.setVisible(true);

        try {
            currentClipboardString = (String) Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);
        } catch (UnsupportedFlavorException | IOException ex) {
            Logger.getLogger(PastyFrame.class.getName()).log(Level.SEVERE, null, ex);

            currentClipboardString = "";
        }
        if (currentClipboardString.isEmpty()) {
            currentClipboardString = "The clipboard is empty";
        }
        frame.setSize(400, 100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setLayout(new FlowLayout());


        clipboardLabel.setText(currentClipboardString);
        frame.add(clipboardLabel);
}

问题答案:

您可以调用Clipboard.addFlavorListener来侦听来自操作系统的剪贴板更新:

Toolkit.getDefaultToolkit().getSystemClipboard().addFlavorListener(new FlavorListener() { 
   @Override 
   public void flavorsChanged(FlavorEvent e) {

      System.out.println("ClipBoard UPDATED: " + e.getSource() + " " + e.toString());
   } 
});

一些注意事项:

  • 要启动您的应用程序,请考虑使用初始线程。
  • 调用JFrame.pack以设置帧大小。
  • KeyListenersKeyEvents在Swing中进行映射相比,首选使用键绑定。


 类似资料:
  • 本文向大家介绍jQuery获取剪贴板内容的方法,包括了jQuery获取剪贴板内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery获取剪贴板内容的方法。分享给大家供大家参考,具体如下: 这两天弄fckeditor粘贴功能,随着工作的深入和在网上查询资料,知道了在网页中一般是不允许访问“剪贴板”的,因为这样存在着很大的安全隐患,我自己也尝试着写了一个简单的demo 在IE和F

  • 本文向大家介绍JS实现获取剪贴板内容的方法,包括了JS实现获取剪贴板内容的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS实现获取剪贴板内容的方法。分享给大家供大家参考,具体如下: 这里介绍了JS获取剪贴板内容的代码: 更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaSc

  • 本文向大家介绍JavaScript复制内容到剪贴板的两种常用方法,包括了JavaScript复制内容到剪贴板的两种常用方法的使用技巧和注意事项,需要的朋友参考一下 常见方法 查了一下万能的Google,现在常见的方法主要是以下两种: 第三方库:clipboard.js 原生方法:document.execCommand() 分别来看看这两种方法是如何使用的。 clipboard.js 这是clip

  • 在系统剪贴板上执行复制和剪贴操作 进程: 主进程, 渲染进程​ 复制字符串例子: 1 const {clipboard} = require('electron') 2 clipboard.writeText('Example String') Copied! 在X Window系统上,还有一个选择剪贴板。要操作它,你需要传递selection到每个方法: 1 const {clipboard}

  • 在系统剪贴板上执行复制和粘贴操作。 进程: Main, Renderer 下面的示例演示如何将字符串写入剪贴板: const { clipboard } = require('electron') clipboard.writeText('Example String') On Linux, there is also a selection clipboard. To manipulate it

  • 问题内容: 我已经实现了回收卡视图,并想使用按钮单击方法来复制cardView的内容。cardview中有两个文本,我只想复制内容,不同的卡片不同。我怎样才能做到这一点?这是我的Cardview适配器。 v.content.getText()。toString(),无法解析内容。 问题答案: 尝试以下