【发布时间】:2014-03-19 16:56:12
【问题描述】:
我一直在尝试将图像(绘图)从剪贴板传输到 JTextPane 或 JTextArea。 附加的代码在这些窗口中正确显示图像,但是一旦我将光标从窗口上移开,图像就会消失。如何修复 JText 中的图像...?我的代码中显然缺少某些东西。我的互联网搜索没有产生任何有用的东西。我在 C# 中没有这个问题。非常感谢您的帮助。
private void jTextPaneStructuresMouseClicked(java.awt.event.MouseEvent evt) {
TransferImage.TransferableImage newImage = new TransferImage.TransferableImage(image);
transferable = Toolkit.getDefaultToolkit().getSystemClipboard().getContents( null );
if ( transferable != null && transferable.isDataFlavorSupported( DataFlavor.imageFlavor ) ) {
try {
image = (Image)transferable.getTransferData( DataFlavor.imageFlavor );
Image cpImage = newImage.getTransferData(DataFlavor.imageFlavor);
jTextPaneStructures.getGraphics().drawImage(cpImage, 0, 0, rootPane);
} catch ( UnsupportedFlavorException | IOException ex) {
Logger.getLogger(WeeklyData.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
/* This is what TransferImage.TransferableImage refers to */
public class TransferImage
{
static class TransferableImage implements Transferable
{
/* -- image for transfer */
private final Image image;
/* -- constructor */
public TransferableImage(Image image)
{
this.image = image;
{
}
}
@Override
public DataFlavor[] getTransferDataFlavors()
{
return new DataFlavor[]
{
DataFlavor.imageFlavor
};
}
@Override
public boolean isDataFlavorSupported( DataFlavor flavor )
{
return flavor == DataFlavor.imageFlavor;
}
@Override
public Image getTransferData( DataFlavor flavor ) throws UnsupportedFlavorException {
if ( isDataFlavorSupported( flavor ) )
{
return image;
}
else
{
throw new UnsupportedFlavorException( flavor );
}
}
}
【问题讨论】:
-
澄清我之前的帖子:只要我将光标从窗口上移开并单击其他位置,图像就会消失。当我再次单击 JTextPane 或 JTextArea 时,它们会再次出现。
标签: java swing clipboard jtextpane drag-and-drop