如何从JTextPane中删除图片?

时间:2013-03-07 14:39:21

标签: java swing user-interface image jtextpane

我有一个代码,可以让用户将图片插入到他的文本文档中。 我有一个JtextPane,用户可以在其中编写一些文本并插入图片。 但如果插入图片已经不可能在不关闭整个程序的情况下将其删除。 如何通过按退格键删除图片?

我的代码现在:

    @Override
    public void actionPerformed(ActionEvent arg0) {
JFileChooser fileChooser = new JFileChooser();
            int option = fileChooser.showOpenDialog(null);
            File file = fileChooser.getSelectedFile();

            if (option == JFileChooser.APPROVE_OPTION){

        try {
            BufferedImage image = ImageIO.read(file);
            image = Scalr.resize(image, 150);
            document = (StyledDocument)textPane.getDocument();
            javax.swing.text.Style style = document.addStyle("StyleName", null);
            StyleConstants.setIcon(style, new ImageIcon(image));
            document.insertString(document.getLength(), "ignored text", style);
        } 

        catch (Exception e){
            e.printStackTrace();
        }

        }

            if (option == JFileChooser.CANCEL_OPTION){


                fileChooser.setVisible(false);

            }

1 个答案:

答案 0 :(得分:1)

查看方法removeStyle(String stylename) link to javadoc

总之,您需要做的是为上面的方法提供您要从文档中删除的样式的名称。所以在你的情况下(基于你的例子)

textPane.removeStyle("StyleName");

现在,要使用退格键删除它,您需要跟踪哪个插入符号位置插入的图像(或者更确切地说,包含图像的样式)以及相应的样式名称在哪里。然后,在退格时,不断检查是否需要删除任何内容,如果需要,请使用removeStyle("relevantStyleName")将其删除