编程语言
首页 > 编程语言> > java – 将图片插入JTextPane

java – 将图片插入JTextPane

作者:互联网

在我的记事本应用程序中,我试图通过单击名为Picture的JMenuItem将图像添加到JTextPane中,就好像它是JLabel一样.

private class Picture implements ActionListener
{
    public void actionPerformed(ActionEvent event)
    {
        fc = new JFileChooser();
        FileNameExtensionFilter picture = new FileNameExtensionFilter("JPEG files (*.jpg)", "jpg");
        fc.setFileFilter(picture);
        fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

        if (fc.showDialog(Notepad.this, "Insert")!=JFileChooser.APPROVE_OPTION)  return;
        filename = fc.getSelectedFile().getAbsolutePath();

        // If no text is entered for the file name, refresh the dialog box
        if (filename==null) return;

        // NullPointerException
        textArea.insertIcon(createImageIcon(filename));
    }

    protected ImageIcon createImageIcon(String path) 
    {
        java.net.URL imgURL = Notepad.class.getResource(path);

        if (imgURL != null) 
        {
            return new ImageIcon(imgURL);
        } 

        else 
        {
            JOptionPane.showMessageDialog(frame, "Could not find file: " + path);
            return null;
        }
    }
}

问题出在第20行,其中有一个NullPointerException,我已经知道为什么会发生这种情况但是…我如何编写那行代码,这样我就可以做类似于textPane.add(image)的事情了(因为我可以’做textPane.add(StyleConstants.setIcon(def,createImageIcon(filename));)?还有另外一个我应该写我的代码来正确执行吗?

解决方法:

您可以在文本窗格中添加组件或图标:

textpane.insertIcon(...);
textPane.insertComponent(...);

标签:jtextpane,actionlistener,java,image,swing
来源: https://codeday.me/bug/20190902/1792224.html