Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Ctrl+;C_Java_Buffer_Copy Paste - Fatal编程技术网

Java 使用Ctrl+;C

Java 使用Ctrl+;C,java,buffer,copy-paste,Java,Buffer,Copy Paste,我试图创建一个应用程序,在某些阶段中,它存储由CTRL+C复制的所有语句,并操纵将当前语句带到特定语句的“缓冲区” 示例:用户按CTRL+C复制“Hello”,如果他在任何文本区域/字段按CTRL+V,写的单词将是“Hello”,我希望写的语句是“Test”而不是“Hello” 问题是:如何使用Java访问携带复制语句的缓冲区并操作其内容?publicstaticvoidmain(String[]args)抛出异常 public static void main(String[] args)

我试图创建一个应用程序,在某些阶段中,它存储由CTRL+C复制的所有语句,并操纵将当前语句带到特定语句的“缓冲区”

示例:用户按CTRL+C复制“Hello”,如果他在任何文本区域/字段按CTRL+V,写的单词将是“Hello”,我希望写的语句是“Test”而不是“Hello”

问题是:如何使用Java访问携带复制语句的缓冲区并操作其内容?

publicstaticvoidmain(String[]args)抛出异常
  public static void main(String[] args) throws Exception
  {
    // Get a reference to the clipboard
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();

    // Poll once per second for a minute
    for (int i = 0; i < 60; i++)
    {
      // Null is ok, because, according to the javadoc, the parameter is not currently used
      Transferable transferable = clipboard.getContents(null);

      // Ensure that the current contents can be expressed as a String
      if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor))
      {
        // Get clipboard contents and cast to String
        String data = (String) transferable.getTransferData(DataFlavor.stringFlavor);

        if (data.equals("Hello"))
        {
          // Change the contents of the clipboard
          StringSelection selection = new StringSelection("Test");
          clipboard.setContents(selection, selection);
        }
      }

      // Wait for a second before the next poll
      try
      {
        Thread.sleep(1000);
      }
      catch (InterruptedException e)
      {
        // no-op
      }
    }
  }
{ //获取对剪贴板的引用 剪贴板剪贴板=Toolkit.getDefaultToolkit().getSystemClipboard(); //每秒投票一次,持续一分钟 对于(int i=0;i<60;i++) { //Null是可以的,因为根据javadoc,该参数当前未使用 可转移=剪贴板.getContents(null); //确保当前内容可以表示为字符串 if(transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) { //获取剪贴板内容并转换为字符串 字符串数据=(字符串)transferable.getTransferData(DataFlavor.stringFlavor); if(data.equals(“Hello”)) { //更改剪贴板的内容 StringSelection=新StringSelection(“测试”); 剪贴板。设置内容(选择,选择); } } //等待一秒钟,然后再进行下一次投票 尝试 { 睡眠(1000); } 捕捉(中断异常e) { //无操作 } } }
我添加了一些简单的可测试性/验证轮询。它将每秒检查一次剪贴板,持续一分钟。据我所知,无法执行基于事件的通知(除非您正在侦听味道更改,而您并没有),所以我认为您只能进行轮询。

publicstaticvoidmain(String[]args)抛出异常
{
//获取对剪贴板的引用
剪贴板剪贴板=Toolkit.getDefaultToolkit().getSystemClipboard();
//每秒投票一次,持续一分钟
对于(int i=0;i<60;i++)
{
//Null是可以的,因为根据javadoc,该参数当前未使用
可转移=剪贴板.getContents(null);
//确保当前内容可以表示为字符串
if(transferable.isDataFlavorSupported(DataFlavor.stringFlavor))
{
//获取剪贴板内容并转换为字符串
字符串数据=(字符串)transferable.getTransferData(DataFlavor.stringFlavor);
if(data.equals(“Hello”))
{
//更改剪贴板的内容
StringSelection=新StringSelection(“测试”);
剪贴板。设置内容(选择,选择);
}
}
//等待一秒钟,然后再进行下一次投票
尝试
{
睡眠(1000);
}
捕捉(中断异常e)
{
//无操作
}
}
}

我添加了一些简单的可测试性/验证轮询。它将每秒检查一次剪贴板,持续一分钟。据我所知,没有办法进行基于事件的通知(除非您正在侦听味道更改,而您没有),因此我认为您必须进行轮询。

那么您想完全更改操作系统剪贴板的内容吗?不,谢谢。可能是@BlueRaja DannyPflughoeft的副本是的,这是我真正想要的,但不能用一个好的声明来表达,thxSo你想完全改变操作系统剪贴板的内容吗?不,谢谢。可能是@BlueRaja DannyPflughoeft的副本是的,这是我真正想要的,但不能用一个好的声明来表达,谢谢