我现在想往jTextPane里添加图片,就和QQ聊天框似的。
jTextPane.setContentType("text/html");
例如:
jTextPane里的内容为:
怎么就不好使了
我在这个时候的鼠标指针在【怎么】的后面,我想添加一个图片表情<img src=http://cache.soso.com/img/img/e102.gif>
但是添加的不是这怎么的后面而是在
<html>
的这个位置添加了一行图片标签ml>
下面是例子:
----------------------------------------------------------------------------
    <img src="file:/D:/Project/XEditor/bin/org/vorld/xeditor/tools/tageditor/ico/02.GIF">
    ml&gt;    <p>
      <img src="http://cache.soso.com/img/img/e100.gif">
      &#24590;&#20040;<b>&#23601;&#19981;</b><font color="#99ff66">&#22909;&#20351;&#20102;</font>
    </p>
-----------------------------------------------
插入代码:
StringBuffer sb = new StringBuffer();
sb.append(jTextPane.getText());
int end = jTextPane.getSelectionStart();
if(faceIco == null)return;
sb.insert(end, "<img src=http://cache.soso.com/img/img/e102.gif>");
jTextPane.setText(sb.toString());
jTextPane.updateUI();

解决方案 »

  1.   

    import java.awt.BorderLayout;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;import javax.swing.JFrame;
    import javax.swing.JTextPane;public class Test extends JFrame implements MouseListener{
        private JTextPane jTextPane;    public Test() {
            super();        jTextPane = new JTextPane();
            getContentPane().add(jTextPane, BorderLayout.CENTER);
            jTextPane.setContentType("text/html");
            jTextPane.setText("qweqweqweqweqw");
            jTextPane.addMouseListener(this);
            
            this.setBounds(100, 100, 400, 300);
        }    public void mouseClicked(MouseEvent e) {
            StringBuffer sb = new StringBuffer();
            sb.append(jTextPane.getText());
            int end = jTextPane.getSelectionStart();
            int htmlHead = sb.indexOf("<body>");
            //4是空格的数量
            sb.insert(end + htmlHead + "<body>".length() + 4, "<img src=http://cache.soso.com/img/img/e102.gif>");
            System.out.println(end);
            System.out.println(sb);
            jTextPane.setText(sb.toString());
            jTextPane.updateUI();
            
        }    
        public static void main(String[] args){
            new Test().setVisible(true);
        }
        
        public void mouseEntered(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }    public void mouseExited(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }    public void mousePressed(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }    public void mouseReleased(MouseEvent e) {
            // TODO Auto-generated method stub
            
        }
        
        
    }