在Java中使用HTMLEditorKit,<;img>;标记忽略了我的CSS样式(但是文本可以很好地接受样式)
好的,我正在用Java开发一个“聊天窗口”,它是用HTMLEditorKit构建的。一般的方法是首先使用stylesheet.addRule()构建一个样式表。我构建的样式表是:在Java中使用HTMLEditorKit,<;img>;标记忽略了我的CSS样式(但是文本可以很好地接受样式),java,html,css,swing,htmleditorkit,Java,Html,Css,Swing,Htmleditorkit,好的,我正在用Java开发一个“聊天窗口”,它是用HTMLEditorKit构建的。一般的方法是首先使用stylesheet.addRule()构建一个样式表。我构建的样式表是: body {color:#ff00ff; font-family:SansSerif; font-size:12pt;} p {color:#ff00ff; font-family:SansSerif; font-size:12pt;} .msg {color:#ff00ff; font-family:Sa
body {color:#ff00ff; font-family:SansSerif; font-size:12pt;}
p {color:#ff00ff; font-family:SansSerif; font-size:12pt;}
.msg {color:#ff00ff; font-family:SansSerif; font-size:12pt;}
.csa {color:#ff0000; font-family:SansSerif; font-size:12pt;}
.usa {color:#0000ff; font-family:SansSerif; font-size:12pt;}
.icon {width:16px; height:16px; object-position:0 5px; }
然后,当我有一条我想申请的聊天热线时,我将其放在一个div中,并将其添加到JTextPane中:
try {
kit.insertHTML(doc, doc.getLength(), "\n<div class="+style+">" + s + "</div>", 0, 0, null);
} catch (BadLocationException ble) {
ErrorDialog.bug(ble);
} catch (IOException ex) {
ErrorDialog.bug(ex);
}
conversation.update(conversation.getGraphics()); //Force update of graphics
试试{
insertHTML(doc,doc.getLength(),“\n”+s+”,0,0,null);
}捕获(BadLocationException-ble){
ErrorDialog.bug(ble);
}捕获(IOEX异常){
ErrorDialog.bug(ex);
}
conversation.update(conversation.getGraphics())//强制更新图形
到目前为止,一切正常!接下来,还有一个问题,就是希望能够在文本中添加一些图像
添加图像本身也很顺利,只要我坚持使用html属性,例如:
<img src="dice.png" width="16" height="16">
但是,只要我尝试做以下两件事之一,它就会忽略我的所有样式:
<img src="dice.png" class="icon">
<img src="dice.png" style="{width:16px; height:16px; object-position:0 5px; }">
我尝试过各种解决方法,包括span标签,我尝试过id样式(例如#icon和id=“icon”),单独的div等等。没有乐趣
这是在相当旧的Java(1.8)版本下运行的一些遗留软件的附加组件,因此我总是“期待最坏的结果”,但正如我所说的,所有其他CSS样式元素(就文本和布局而言)都工作得很好。寻找任何故障排除提示,或者是否存在图像的特殊HTMLEditorKit限制(但再次强调,只要我坚持使用html属性而不是CSS,并且所有CSS都可以与文本配合使用,我的所有图像都可以很好地工作)。非常感谢您的帮助。尝试将图像设置为
display:block
或display:inline block
。
内联块
可能不受支持。如果图像是display:inline
,则高度和宽度属性不会影响图像。还建议仅设置宽度以保持纵横比
.icon1{
宽度:100px;
高度:100px;
显示:块;
}
.icon2{
宽度:110px;
高度:110px;
显示:内联块;
}
.icon3{
宽度:120px;
显示:块;
}
/*例如,额外的样式*/
img{
保证金:4倍;
}
添加图像本身也很顺利,-那么这意味着你的最后一个问题:,得到了回答。所以你应该通过点击复选标记来“接受”答案,这样人们就知道原来的问题已经解决了。基本的答案是只支持HTML3.2的一个子集。不知道你想做的事情是否得到支持。我建议您使用JTextPane并使用文本属性和段落属性来设置文本样式。上一个问题的链接中提供了一个例子。至于前面的问题——上面的答案实际上没有帮助,或者更确切地说,它是有帮助的,但没有引导我找到解决实际问题的方法。我最终在其他地方找到了一个半答案(需要生成一个显式URL,例如使用ClassLoader之类的工具),并设法让它运行起来。我打算等几天,看看是否有人碰巧提供了该表格的答案,这样我就可以接受它,否则我自己就可以添加答案。我真的很感谢你过来帮忙。1)像这样的评论应该添加到原始问题中,让人们知道你确实读过这个建议,否则将来的激励帮助是什么。2) 教程中的演示代码在没有任何特殊代码或类加载器的情况下工作。3) 如果您使用不同的解决方案,请随时发布您自己的答案。4) 发布一个你的问题来演示问题,这样人们就可以确切地看到你在做什么。谢谢,我会注意到的。对于这个问题,我有强烈的动机让它在HTMLEditorKit中运行,特别是为了利用html。因此,我希望了解HTMLEditorKit的局限性(例如,如果有人知道它不能也不应该在图像中使用CSS),或者最好是有人能够发现或建议我“做错了”的事情,从而使图像样式化。我四处搜索,找不到有这个问题的人,这让我觉得我可能“遗漏了一件事”。唉,没有乐趣。尝试生成准确的样式,也尝试放置例如display:block;在img标记的style=“…”属性中。出于某种原因,我无法让窗口接受图像上的样式——它接受所有样式/类/等等,对于文本元素来说都很好。并且它接受像width=“16”这样的属性,对于图像来说很好。在纵横比上有一个很好的点——我的原始图像是正方形的,但我真的应该强制高度(这对我来说是一个重要的限制),让宽度自动调整。为了清楚起见,如果我把这些都放在浏览器中,它的工作效果就不足为奇了——它只是没有在这个Java HTMLEditorKit窗口中使用img样式,我也不明白为什么。它也只支持html 3.2,所以支持的css不是最好的。