gpt4 book ai didi

java - JEdi​​torPane、HTMLEditorKit - 插入自定义标签的自定义操作

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:58 25 4
gpt4 key购买 nike

我相信 JEditorPane .我需要简单的编辑器。我已经解决了加载和修改包含自定义(两个)标签的 HTML 的问题(参见 my older post )。它可以正确显示文档,我现在甚至可以编辑它。我可以编写文本、删除字符或我的自定义元素。我赢得了一场战斗,但还没有赢得这场 war 。遗憾的是,下一步也很有问题。我无法插入我的自定义标签。

我有一个自定义操作:

import my.own.HTMLEditorKit; //extends standard HTMLEditorKit
import my.own.HTMLDocument; //extends standard HTMLDocument

class InsertElementAction extends StyledTextAction {
private static final long serialVersionUID = 1L;

public InsertElementAction(String actionName) {
super(actionName);
}

@Override
public void actionPerformed(ActionEvent e) {
JEditorPane editor = getEditor(e);

if (editor == null)
return;

HTMLDocument doc = (HTMLDocument) editor.getDocument();
HTMLEditorKit ekit = (HTMLEditorKit) editor.getEditorKit();
int offset = editor.getSelectionStart();

try {
ekit.insertHTML(doc, offset, "<span>ahoj</span>", 0, 0, HTML.Tag.SPAN);
Element ele = doc.getRootElements()[0];
ele = ele.getElement(1).getElement(0);
doc.setInnerHTML(ele, "<bar medium=\"#DEFAULT\" type=\"packaged\" source=\"identifier\" />");
}
catch (BadLocationException ble) {
throw new Error(ble);
}
catch (IOException ioe) {
throw new Error(ioe);
}
}
}

它正常工作。我可以插入 span元素。但是我不能以这种方式插入非标准标签。我可以插入 code , span等等,但不是我的标签。对于我的标签,我不得不使用这个:

ekit.insertHTML(doc, offset, "x<bar medium=\"#DEFAULT\" type=\"packaged\" source=\"identifier\" />x", 0, 0, null);

有两个关键问题

  1. 自定义标签必须以非 whispace 字符为界(这里是 x)
  2. 当前元素的正文被分割

当我插入 span 时元素转化为<p>paragraph</p> , 我得到 <p>par<span>ahoj</span>agraph</p>正如预期的那样。然而,未知标记始终作为 body 的子项插入元素和结果(例如对于未知标签 x )是 <p>par</p><x>ahoj</x><p>agraph</p> .

工作很累。几个星期以来,我一直相信这个相对简单的任务。我已经废了。如果插入不起作用,我可以将其全部废弃...

最佳答案

关于java - JEdi​​torPane、HTMLEditorKit - 插入自定义标签的自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7608168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com