首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像从文件夹拖放到JTextPane

将图像从文件夹拖放到JTextPane
EN

Stack Overflow用户
提问于 2011-11-04 05:08:55
回答 1查看 611关注 0票数 1

我想使用从系统拖放到JTextPane中的图像实现JTextPane来编辑文本。我试图通过使用JTextPane作为超类和DropTargetListener作为接口来实现它。但是当我试图读取我的InputStream时,我得到了一个NullPointerException。请帮帮忙。

代码语言:javascript
复制
import java.awt.datatransfer.*;
import java.awt.dnd.*;
import java.io.*;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JTextPane;

public class JTextTest extends JTextPane implements DropTargetListener {

private static final long serialVersionUID = 1L;

public JTextTest() {
    new DropTarget(this, this);
    this.setDragEnabled(true);
}

@Override
public void dragEnter(DropTargetDragEvent arg0) {
}

@Override
public void dragExit(DropTargetEvent arg0) {
}

@Override
public void dragOver(DropTargetDragEvent arg0) {
}

@Override
public void drop(DropTargetDropEvent dropTargetDropEvent) {
    System.out.println("Drop event");
    Transferable transferable = dropTargetDropEvent.getTransferable();
    for (DataFlavor d : transferable.getTransferDataFlavors()) {
        if (d.isRepresentationClassInputStream()) {
            dropTargetDropEvent
                    .acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
            try {
                InputStream is = new BufferedInputStream(
                        (InputStream) transferable.getTransferData(d));

                ImageIcon image = new ImageIcon(ImageIO.read(is));
                this.insertIcon(image);
            } catch (UnsupportedFlavorException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } 

        } else {
            dropTargetDropEvent.rejectDrop();
        }
    }
    dropTargetDropEvent.getDropTargetContext().dropComplete(true);
}

@Override
public void dropActionChanged(DropTargetDragEvent arg0) {
}
}
EN

回答 1

Stack Overflow用户

发布于 2011-11-04 11:59:24

用下面的代码片段试试吧,

代码语言:javascript
复制
ImageIcon image = new ImageIcon(ImageIO.read(createImageInputStream(is)));

ImageIO.read()需要一个FileImageInputStreamInputStreamURL,并注意在处理图像时,当图像、图像源或从该源读取时出现问题(更具体地说,读取图像返回null)时,将抛出大部分NullPointerException

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8001875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档