1

我试图将图像复制到剪贴板并使用以下代码段将其粘贴到 gimp 中:

BufferedImage bi = new BufferedImage(board.getAmount()*16,16,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bi.createGraphics();

Color[] colors = board.getColors();

for (int loop = 0; loop < board.getAmount(); loop++) {
    g2d.setColor(colors[loop]);
    g2d.fill(new Rectangle(16*loop,0,16,16));
}



ImageSelection is = new ImageSelection(bi);

Toolkit.getDefaultToolkit().getSystemClipboard().setContents(is, null);

无论如何,理论上一切都应该很好。它没有给我任何错误,但是当我尝试粘贴图像时,什么也没有发生。

这是在两台不同的 linux 机器上完成的,但都没有工作。然后我来到学校并在 Windows 上使用相同的代码进行了尝试,并且成功了。

所以我想我真正的问题是它与open-jdk或java 1.7有关,还是linux的问题?我该如何解决?

4

2 回答 2

0

我有同样的问题,发现这个工作:

final Clipboard clipboard = frame.getToolkit().getSystemSelection();

...然后继续将其用作常规剪贴板。“系统选择”允许您更改窗口管理器认为已选择的内容,因此“在剪贴板上”。

我不确定检测是否应该使用系统选择或系统剪贴板的最佳方法是什么,但看起来 Windows 将为 getSystemSelection 返回 null,因此可以用作测试。

于 2014-01-22T21:37:12.987 回答
0

我认为下一页可能有用:http ://www.java2s.com/Code/Java/2D-Graphics-GUI/SendingImageObjectsthroughtheClipboard.htm 。

考虑以下几行将图像复制到剪贴板。

final Clipboard clipboard = frame.getToolkit().getSystemClipboard();
label.setTransferHandler(new ImageSelection());
...
TransferHandler handler = label.getTransferHandler();
handler.exportToClipboard(label, clipboard, TransferHandler.COPY);
于 2012-05-09T15:01:50.400 回答