java HTMLDocument:Swing是否“优化”了跨元素?
我正在Swing中的JTextPane中摆弄HTMLDocument。如果我遇到这种情况:
<html>...
<p id='paragraph1'><span>something</span></p>
<span id='span1'><span>something else</span></span>
...</html>
(额外的<span>
标记是为了防止Swing抱怨我无法更改叶子的innerHTML)或这种情况
<html>...
<p id='paragraph1' />
<span id='span1' />
...</html>
我可以打电话给HTMLDocument。getElement()并查找ID为“paragraph1”的元素,但找不到ID为“span1”的元素。如果我把“span1”的标签从“span”改为“p”,那么我就没事了。世跆联在这里进行什么?是否可以使用另一个HTML元素来代替,它允许我使用id属性访问文档的特定部分,而不会导致换行?(斯潘应该是完美的:(啊!)
编辑:我认为解决方案是重新检查我正在尝试做的事情,这是利用我比Swing更了解如何在HTML中制作GUI+表格+显示的事实,所以我要问一个不同的问题
# 1 楼答案
我不知道Swing,但是
<p style="display: inline;">
不换行,与<span>
相同# 2 楼答案
我查看了HTMLDocument的javadoc,它将我指向HTMLReader
我在HTMLReader中没有看到任何关于span的内容。也许它只是不知道这个元素
p可能不是span的好替代品。P是块级元素,span是文本级元素(see description of those terms)。也许可以尝试不带属性的字体(另一个文本级元素)
# 3 楼答案
我确实有这个问题。我的跨度元素消失了。 如果我用div,我就能看到它们。但我当然不想要div元素,因为它会导致换行
该死!该死的爪哇
编辑
停止新闻报道
找到了答案。至少,一个能帮我解决问题的答案
我仍然能够确定我有我的跨度元素。我将描述我正在做什么,并提供代码,说明我是如何做到的
我想知道插入符号是什么元素。因此,这段代码存在于caretUpdate函数中,它在每次移动时都为我提供插入符号位置
编辑
擦掉那个。。。这几乎奏效了。。。除了Sun的白痴们决定密钥是HTML类型。属性不仅如此,它还是HTML的构造函数。属性是私有的,我想要的属性类型恰好不存在于它们的特权属性集中。混蛋! 所以,一切都没有失去。。。我仍然可以通过统计员得到。。但这比需要的要困难一些
最后一次编辑
好了,我现在明白了。如果属性是已知类型,它将作为HTML实例存储在AttributeSet中。属性(“类型”)。 否则,它将以“字符串”作为键存储在属性集中。 愚蠢的但我已经做到了