【问题标题】:Copy from swing and paste in other Windows application从 swing 复制并粘贴到其他 Windows 应用程序中
【发布时间】:2015-03-25 23:54:24
【问题描述】:

我已经搜索了一段时间,但没有显示令人满意的结果,所以想在这里问。

基本上我有一个 JAVA Swing GUI 表,它有一些行,比如说每行 3 列,你会在一行上看到“1 david good”。此行的内容是从原始消息(即 xml 消息)转换而来的。

我想要做的是,当我选择一行并按 ctrl+c 时,可以将原始消息复制到剪贴板,然后我可以将其粘贴到其他 Windows 应用程序中,例如记事本或 Word。

我尝试使用工具包来获取系统剪贴板并将原始消息放入(通过 keylistener)。但是当我在记事本中按 ctrl+v 时,我仍然会默认显示“1 david good”。

我在 Swing 代码中从剪贴板打印了原始消息,因此我猜测我的代码是否仅适用于 Swing,无法在 Windows 中检索自定义内容?

有人可以告诉我是否可以在 Swing 中进行操作?非常感谢。

【问题讨论】:

  • JTable 在复制粘贴时会创建自己的Transferable。您需要调整创建的Transferable。可以在here 找到一个示例。该示例以另一种方式工作:模型中的内容与呈现的字符串不同,并且呈现的字符串是复制粘贴而不是模型内容。

标签: java swing clipboard


【解决方案1】:

你可以使用这个例子:

String str = "Which String to copy to clipboard";
StringSelection stringSelection = new StringSelection (str);
Clipboard clpbrd = Toolkit.getDefaultToolkit().getSystemClipboard ();
clpbrd.setContents (stringSelection, null);

所以当从actionPerformed()调用某个按钮时单击某个按钮时可以使用此代码

对于粘贴问题:

  public String getClipboardContents() {
    String result = "";
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    //odd: the Object param of getContents is not currently used
    Transferable contents = clipboard.getContents(null);
    boolean hasTransferableText =
      (contents != null) &&
      contents.isDataFlavorSupported(DataFlavor.stringFlavor)
    ;
    if (hasTransferableText) {
      try {
        result = (String)contents.getTransferData(DataFlavor.stringFlavor);
      }
      catch (UnsupportedFlavorException | IOException ex){
        System.out.println(ex);
        ex.printStackTrace();
      }
    }
    return result;
  }

【讨论】:

  • 感谢您的回答,罗伊。
  • 嗨罗伊。我认为该代码仅适用于 Swing(您在 Windows 中粘贴的内容不是您在 system.out 中看到的)
  • 我听不懂你在说什么。此代码必须使用 Swing。
  • 我的意思是,如果我什么都不做,Windows 会从 JTable 复制“1 david good”(正是我所看到的),我可以将它粘贴到任何地方,比如记事本、Word,甚至是 chrome。在 Swing 中,我可以将代码添加到 'ctrl+c' 事件中,让 java 实际上将另一个字符串(如“a=1,b=david,c=good”)复制到系统剪贴板中。但是当我在记事本或任何其他 Windows 应用程序中按“ctrl+v”时,我得到的仍然是“1 david good”。
猜你喜欢
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 2016-04-16
  • 1970-01-01
相关资源
最近更新 更多