在JTextPane中,如何更改输入元素的value属性?

时间:2009-12-27 07:15:28

标签: java html swing jtextpane

我有一个由JTextPane显示的HTML文档非常好用。我有一些按钮,我使用ActionListeners与ButtonModel交互,我挂钩到状态链接(#foo)来处理简单的内部应用程序链接。

我的问题是我有一个INPUT元素,我需要更改“值”,以便文本在框中更改。

2 个答案:

答案 0 :(得分:1)

JTextPane的getText()setText()方法使您可以完全访问组件显示的文本。如果这恰好是HTML,那么您正在处理的文本是HTML文档,您需要更改该HTML文本,就像您直接显示HTML一样。

如果您有INPUT type="text"或默认类型,则会显示文本字段,其显示值由value=属性控制。

为此,您需要对JTextPane的文本值进行一些代码内文本编辑。您可以使用IndexOf()查找INPUT标记的偏移量,然后再次找到value或结束尖括号,然后在所需位置插入所需的值。

如果设置了新的String,请使用setText()将其重新放回JTextPane中。完成。

答案 1 :(得分:1)

HTMLDocument有一个getElement方法,用于获取具有给定id属性的javax.swing.text.Element。使用它来获取输入元素,然后调用

htmlDocument.setOuterHtml(
    inputElement, 
    "<input id=\"foo\" value=\"" + escapeHtml(newValue) + "\">"
)

用新值替换inputElement的值。

注意,我没试过这个。如果有效,请告诉我们!