IntelliJ IDEA 开发插件,获取鼠标选中的文本​​​​​​​

IntelliJ IDEA 开发插件,获取鼠标选中的文本

 

在开发插件的过程中,需要获取光标框选的文本内容,经过百度查询和查看cut和copy的源码发现并没有直接获取文本的方法(也或者有,我没有找到),通过几个小时的搜索,只能放弃直接获取文本的方式,转向其他方式替代

转变前思路:

光标选中文本--->调用api获取选中的文本

转变后的思路:

光标选中文本--->自定义插件模拟copy动作------>从系统剪贴板获取内容------->清空系统剪切板

经过测试,这个思路完全可行,直接贴代码

//模拟copy动作
 RichCopySettings settings = RichCopySettings.getInstance();
            boolean savedValue = settings.isEnabled();

            try {
                settings.setEnabled(true);
                ActionManager.getInstance().getAction("EditorCopy").actionPerformed(e);
            } finally {
                settings.setEnabled(savedValue);
            }
//获取剪贴板内容
  
    public static String getSysClipboardText() {
        String ret = "";
        Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();
        // 获取剪切板中的内容
        Transferable clipTf = sysClip.getContents(null);

        if (clipTf != null) {
            // 检查内容是否是文本类型
            if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                try {
                    ret = (String) clipTf
                            .getTransferData(DataFlavor.stringFlavor);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }

        return ret;
    }
//清空剪贴板
    public static void setSysClipboardText(String writeMe) {
        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
        Transferable tText =new StringSelection(writeMe);//覆盖系统剪切板
        clip.setContents(tText,null);
    }

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值