Jtextpane不够向下滚动

时间:2015-08-27 14:00:40

标签: java swing htmleditorkit

我正在编写一个聊天应用程序,可以在其中发布图像(使用html。)消息显示在Jtextpane中,包含在Jscrollpane中,每次收到消息时都会向下滚动。对于普通文本,这非常有效,但是,每次收到消息时都需要重新加载图像,并且滚动窗格似乎向下滚动 - 在图像完成加载之前,只留下部分向下滚动。我试着不断地从另一个线程向下滚动它,但这似乎没有做到,所以我猜它没有看到图像对象的实际大小,只有在实际图像之前加载的小“占位符”图片?

public void addMessage(String sender, String msg) throws BadLocationException, IOException{

    pane.setEditorKit(kit);
    pane.setDocument(doc);

    kit.insertHTML(doc, doc.getLength(), "<b>[" + sender + "]</b> " + msg, 0, 0, null);
    pane.setCaretPosition(pane.getDocument().getLength());
}

有什么方法吗?

1 个答案:

答案 0 :(得分:1)

  

所以我猜它没有看到图像对象的实际大小,只有在实际图像之前加载的小“占位符”图片?

<?
include("open-db-connection.php");
extract($_GET);

$RecentMonth=date("F");
?>

<div class='row'>
    <div class='col-md-2'><label>Select Store</label></div>
    <div class='col-md-4'>
        <select class='form-control' name='StoreNo'>
            <option value="">Select Store</option>
            <?
            $QueryStore=mysql_query("SELECT * FROM AubreeStores WHERE AStoreCity='$CityNo' ");
            while($RowS=mysql_fetch_array($QueryStore))
            {?>
            <option value="<?echo $RowS['AStoreNo'];?>"><?echo $RowS['AStoreName'];?></option>
            <?}?>
        </select>
    </div>
</div>

尝试将该代码包装在pane.setCaretPosition(pane.getDocument().getLength()); 中,以便将代码添加到EDT的末尾。希望在代码执行时,文档会正确更新。

我还会考虑使用带有样式属性的常规文本:https://stackoverflow.com/a/32235020/131872。我发现使用属性更容易,然后担心使用HTML正确格式化文本字符串。