Inserting Images into a JTextPane Error

故事扮演 提交于 2020-01-24 20:45:11

问题


I asked about this before, but, I decided to start a new thread with a SCCE, it compiles sucessfully but it doesn't insert the image. Can anyone troubleshoot as to why it does this? Thanks, Chris.

Here is the full code:

package mathnotesplus;

import java.awt.Dimension;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.SwingUtilities;
import javax.swing.JPanel;
import javax.swing.JTextPane;

import javax.swing.JFrame;

import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.text.*;
/**
 *
 * @author ChrisCates
 */
public class MathNotesPlus extends JFrame implements TreeSelectionListener {

    /**
     * @param args the command line arguments
     */
    public MathNotesPlus() {
        setTitle("Math Notes Plus");
        setSize(800, 600);
        initUI();
    }


    JPanel panel;
    JTextPane textpane;
    JTree navigation;
    StyledDocument document;

    public void initUI(){
        //The panel.
        panel = new JPanel();
        //Textpane and JTree
        textpane = new JTextPane();
        navigation = new JTree();
        navigation.addTreeSelectionListener(this);
        //Preferred Resolution Size
        navigation.setPreferredSize(new Dimension(100, 600));
        textpane.setPreferredSize(new Dimension(700, 600));

        //Insertion of image into the document.
        try {
            document = (StyledDocument)textpane.getDocument();
            Style style = document.addStyle("StyleName", null);
            StyleConstants.setIcon(style, new ImageIcon("sigma.png"));
            document.insertString(document.getLength(), "ignored text", style);
        } catch (BadLocationException e){
            System.err.println("ERROR");
        }

        //Putting everything into the program.
        panel.add(navigation);
        panel.add(textpane);        
        add(panel);
        pack();


    }

    public static void main(String[] args) {
        // TODO code application logic here
        SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            MathNotesPlus app = new MathNotesPlus();
                app.setVisible(true);
            }
        });
    }

    @Override
    public void valueChanged(TreeSelectionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

回答1:


Base on this working example (a very close variant of your code) that works, I can only guess that your code is failing because the image is not being found.

import java.awt.Dimension;
import java.awt.Image;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.text.*;
import java.net.URL;
import javax.imageio.ImageIO;

public class MathNotesPlus extends JFrame {

    JPanel panel;
    JTextPane textpane;
    StyledDocument document;

    public MathNotesPlus() {
        setTitle("Math Notes Plus");
        setSize(800, 600);
        initUI();
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    }

    public void initUI(){
        //The panel.
        panel = new JPanel();
        //Textpane
        textpane = new JTextPane();
        textpane.setPreferredSize(new Dimension(700, 600));

        //Insertion of image into the document.
        try {
            Image image = ImageIO.read(new URL(
                "http://pscode.org/media/stromlo1.jpg"));

            document = (StyledDocument)textpane.getDocument();
            Style style = document.addStyle("StyleName", null);
            StyleConstants.setIcon(style, new ImageIcon(image));
            document.insertString(document.getLength(), "ignored text", style);
        } catch (Exception e){
            e.printStackTrace();
        }

        //Putting everything into the program.
        panel.add(textpane);
        add(panel);
        pack();
    }

    public static void main(String[] args) {
        // TODO code application logic here
        SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            MathNotesPlus app = new MathNotesPlus();
                app.setVisible(true);
            }
        });
    }
}


来源:https://stackoverflow.com/questions/9083776/inserting-images-into-a-jtextpane-error

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!