在Jtextpane中添加图片,添一张图片可以.第二张没显示了
package com.softfz.weekend.messages;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Image;
import java.awt.Label;
import java.io.OutputStream;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.Document;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
public class MessagePanel extends JPanel{
private  JTextPane Message = new JTextPane();
private JScrollPane ScrollPane ;
private SimpleAttributeSet attrset = new SimpleAttributeSet();
public MessagePanel(int isedit){
ScrollPane = new JScrollPane(this,
 JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
ScrollPane.setSize(250,100);
//Message.setAutoscrolls(true);
this.setLayout(new BorderLayout());
this.add(Message);
this.setSize(250,100);
if(isedit==0)
Message.setEditable(false);
if(isedit==1)
Message.setEditable(true);
}
public MessagePanel(){}
//添加文字
public void insertStr(String text,AttributeSet attrset,int n){
String  ntext = null;
int ComLenght = 0;
if(n==0)
ntext=text+"\n";
if(n==1)
ntext=text;
Document docs=Message.getDocument();
try{
      docs.insertString(docs.getLength(),ntext,attrset);   
      for (int i = 0;i > Message.getComponentCount();i++)
      {
       ComLenght = ComLenght+Message.getComponents()[i].getWidth();
      }
     Message.select(text.length()+ComLenght,text.length()+ComLenght+1);
    }catch(BadLocationException ble){
       ///System.out.println("BadLocationException:"+ble);
    }
  }
//添加图片//
public void addImg(ImageIcon imagefile)
{
Message.insertComponent(new JLabel(imagefile));

//Message.insertIcon(imagefile);
}
//以什么颜色添加   public void setColorFont(String str,int n,int x,String font,Color color){
    StyleConstants.setForeground(attrset,color);
    setFontsize(x,font);
    insertStr(str,attrset,n);
  }
  public void setColorFont(String txt,int n)
  {
  StyleConstants.setForeground(attrset,Color.BLACK);
    setFontsize(12,"宋体");
    insertStr(txt,attrset,n);
  }//   设置字体样式

public void setFontsize(int x,String font){
    StyleConstants.setFontSize(attrset,x);
    StyleConstants.setFontFamily(attrset,font); 
  }
 
public static void main(String[] args) {
JFrame f= new JFrame();
MessagePanel mm = new MessagePanel(1);
mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLACK);
System.out.println(mm.getMessage().getSelectionStart());
mm.addImg(new ImageIcon("images/1.jpg"));
mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
mm.addImg(new ImageIcon("images/1.jpg"));
mm.setColorFont("sjkskjkj",0,12,"宋体",Color.GRAY);
System.out.println(mm.getMessage().getSelectionStart());
//mm.addText("sjkskjkj");
f.getContentPane().add(mm.getScrollPane());
f.pack();
f.setVisible(true);
}public JTextPane getMessage() {
return Message;
}public void setMessage(JTextPane message) {
Message = message;
}public JScrollPane getScrollPane() {
return ScrollPane;
}public void setScrollPane(JScrollPane scrollPane) {
ScrollPane = scrollPane;
}}

解决方案 »

  1.   

    这样可以时显示了,但是没按我的位置
    package com.softfz.weekend.messages;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Image;
    import java.awt.Label;
    import java.io.OutputStream;import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextPane;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.DefaultStyledDocument;
    import javax.swing.text.Document;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    public class MessagePanel extends JPanel{
    private  JTextPane Message = new JTextPane();
    private JScrollPane ScrollPane ;
    private SimpleAttributeSet attrset = new SimpleAttributeSet();
    private int ComLenght = 0;
    public MessagePanel(int isedit){
    ScrollPane = new JScrollPane(this,
     JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    ScrollPane.setSize(250,100);
    //Message.setAutoscrolls(true);
    this.setLayout(new BorderLayout());
    this.add(Message);
    this.setSize(250,100);
    if(isedit==0)
    Message.setEditable(false);
    if(isedit==1)
    Message.setEditable(true);
    }
    public MessagePanel(){}
    //添加文字
    public void insertStr(String text,AttributeSet attrset,int n){
    String  ntext = null;
    if(n==0)
    ntext=text+"\n";
    if(n==1)
    ntext=text;
    Document docs=Message.getDocument();
    try{
          docs.insertString(docs.getLength(),ntext,attrset);   
          for (int i = 0;i > Message.getComponentCount();i++)
          {
           ComLenght = ComLenght+Message.getComponents()[i].getWidth();
          }
         Message.select(text.length()+ComLenght,text.length()+ComLenght+1);
        }catch(BadLocationException ble){
           ///System.out.println("BadLocationException:"+ble);
        }
      }
    //添加图片//
    public void addImg(ImageIcon imagefile)
    {
    for (int i = 0;i > Message.getComponentCount();i++)
          {
           ComLenght = ComLenght+Message.getComponents()[i].getWidth();
          }
          Message.select(Message.getSelectionEnd()+ComLenght,Message.getSelectionEnd()+ComLenght);
          Message.insertComponent(new JLabel(imagefile));
    }
    //以什么颜色添加   public void setColorFont(String str,int n,int x,String font,Color color){
        StyleConstants.setForeground(attrset,color);
        setFontsize(x,font);
        insertStr(str,attrset,n);
      }
      public void setColorFont(String txt,int n)
      {
      StyleConstants.setForeground(attrset,Color.BLACK);
        setFontsize(12,"宋体");
        insertStr(txt,attrset,n);
      }//   设置字体样式

    public void setFontsize(int x,String font){
        StyleConstants.setFontSize(attrset,x);
        StyleConstants.setFontFamily(attrset,font); 
      }
     
    public static void main(String[] args) {
    JFrame f= new JFrame();
    MessagePanel mm = new MessagePanel(1);
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLACK);
    System.out.println(mm.getMessage().getSelectionStart());
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.GRAY);
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.addImg(new ImageIcon("images/1.jpg"));
    System.out.println(mm.getMessage().getSelectionStart());
    f.getContentPane().add(mm.getScrollPane());
    f.pack();
    f.setVisible(true);
    }public JTextPane getMessage() {
    return Message;
    }public void setMessage(JTextPane message) {
    Message = message;
    }public JScrollPane getScrollPane() {
    return ScrollPane;
    }public void setScrollPane(JScrollPane scrollPane) {
    ScrollPane = scrollPane;
    }}
      

  2.   

    package com.softfz.weekend.messages;import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Image;
    import java.awt.Label;
    import java.io.OutputStream;import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextPane;
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.DefaultStyledDocument;
    import javax.swing.text.Document;
    import javax.swing.text.SimpleAttributeSet;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    public class MessagePanel extends JPanel{
    private  JTextPane Message = new JTextPane();
    private JScrollPane ScrollPane ;
    private SimpleAttributeSet attrset = new SimpleAttributeSet();
    public MessagePanel(int isedit){
    ScrollPane = new JScrollPane(this,
     JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    ScrollPane.setSize(250,100);
    //Message.setAutoscrolls(true);
    this.setLayout(new BorderLayout());
    this.add(Message);
    this.setSize(250,100);
    if(isedit==0)
    Message.setEditable(false);
    if(isedit==1)
    Message.setEditable(true);
    }
    public MessagePanel(){}
    //添加文字
    public void insertStr(String text,AttributeSet attrset,int n){
    String  ntext = null;
    int ComLenght = 0;
    if(n==0)
    ntext=text+"\n";
    if(n==1)
    ntext=text;
    Document docs=Message.getDocument();
    try{
         docs.insertString(docs.getLength(),ntext,attrset); 
         Message.setSelectionStart(Message.getText().length()+ntext.length()+1);
        }catch(BadLocationException ble){
           ///System.out.println("BadLocationException:"+ble);
        }
      }
    //添加图片//
    public void addImg(ImageIcon imagefile)
    {
    int ComLenght = 0;
          Message.insertComponent(new JLabel(imagefile));
    }
    //以什么颜色添加   public void setColorFont(String str,int n,int x,String font,Color color){
        StyleConstants.setForeground(attrset,color);
        setFontsize(x,font);
        insertStr(str,attrset,n);
      }
      public void setColorFont(String txt,int n)
      {
      StyleConstants.setForeground(attrset,Color.BLACK);
        setFontsize(12,"宋体");
        insertStr(txt,attrset,n);
      }//   设置字体样式

    public void setFontsize(int x,String font){
        StyleConstants.setFontSize(attrset,x);
        StyleConstants.setFontFamily(attrset,font); 
      }
     
    public static void main(String[] args) {
    JFrame f= new JFrame();
    MessagePanel mm = new MessagePanel(1);
    /*mm.addImg(new ImageIcon("images/1.jpg"));
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLACK);*/
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLACK);
    System.out.println(mm.getMessage().getSelectionStart());
    mm.addImg(new ImageIcon("images/1.jpg"));
    System.out.println(mm.getMessage().getSelectionStart());
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
    System.out.println(mm.getMessage().getSelectionStart());
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.GRAY);
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.addImg(new ImageIcon("images/1.jpg"));
    mm.setColorFont("sjkskjkj",0,12,"宋体",Color.BLUE);
    System.out.println(mm.getMessage().getSelectionStart());
    f.getContentPane().add(mm.getScrollPane());
    f.pack();
    f.setVisible(true);
    }public JTextPane getMessage() {
    return Message;
    }public void setMessage(JTextPane message) {
    Message = message;
    }public JScrollPane getScrollPane() {
    return ScrollPane;
    }public void setScrollPane(JScrollPane scrollPane) {
    ScrollPane = scrollPane;
    }}