我正在编写一个聊天应用程序,可以在其中发布图像(使用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());
}
有什么方法吗?
答案 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正确格式化文本字符串。