用两个JTextPane做的一个类似QQ的聊天窗口,点击发送按钮后读取位于下方的JTextPane的内容(包括图片和文字)然后把内容写到上方的JtextPane中,如果只有文字的话可以使用getText()和setText()方法,但是现在是图文混合的,该怎么读取和写入呢?

解决方案 »

  1.   

    楼上两位是说用下面这种方法吗?(假设消息输入为inputMessage,历史消息为historyMessage)
    StyledDocument doc=inputMessage.getStyledDocument();
    historyMessage.setStyledDocument(doc);
    可是这样用的话,两个JtextPane就共用的同一个 StyledDocument了,只要你在inputMessage中输入内容,historyMessage中也会立即出现相同的内容,可是我需要的是点击发送按钮后把inputMessage中的内容(包括图片和文字)追加到historyMessage中,求解!!!!!
      

  2.   

    不是共享一个StyledDocument实例,而是把一个的内容添加到另一个里。
      

  3.   

    像我上面说的方法,只要你在下面的JTextPane输入内容,上面的JTextPane的内容也会同步改变,但我要的是先在下面的JTextPane输入内容,点击发送按钮后才把下面的内容追加到上面的JTextPane中
    请问到底要如何才能实现我要的效果呢???????
      

  4.   

    自己写了一个方法,其中Editor继承自JTextPane,经测试完全可以实现两个JTextPane之间内容的传递public void copyContent(Editor from, Editor to) {
    Vector<String> picVector = new Vector<String>();
    int loc = to.getEditorDocument().getLength();
    // System.out.println(loc);
    for (int i = 0; i < from.getStyledDocument().getRootElements()[0]
    .getElement(0).getElementCount(); i++) {
    Icon icon = StyleConstants.getIcon(from.getStyledDocument()
    .getRootElements()[0].getElement(0).getElement(i)
    .getAttributes());
    if (icon != null) {
    picVector.add(icon.toString());
    }
    }
    int k = 0;
    for (int i = 0; i < from.getText().length(); i++) {
    if (from.getStyledDocument().getCharacterElement(i).getName()
    .equals("icon")) {
    to.insertIcon(new ImageIcon(picVector.get(k).toString()));
    picVector.get(k++);
    } else {
    try {
    to.getStyledDocument().insertString(to.getText().length(),
    from.getStyledDocument().getText(i, 1), null);
    } catch (BadLocationException ble) {
    ble.printStackTrace();
    }
    }
    }
    picVector.clear(); }