我與JEditorPane
相信。我需要簡單的編輯器。我已經解決了加載和修改包含自定義(兩個)標籤的HTML的問題(請參閱my older post)。它正確顯示文檔,我現在甚至可以編輯它。我可以寫文字,刪除字符或我的自定義元素。我贏得了一場戰鬥,但還沒有贏得戰爭。令人遺憾的是,下一步也是非常有問題的。我無法插入自定義標籤。JEditorPane,HTMLEditorKit - 自定義動作插入自定義標記
我有一個自定義操作:
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);
}
}
}
它workts正常。我可以插入span
元素。但是我不能用這種方式插入非標準標籤。我只能插入code
,span
等,但不能插入我的標籤。對於我的標籤我被迫使用:
ekit.insertHTML(doc, offset, "x<bar medium=\"#DEFAULT\" type=\"packaged\" source=\"identifier\" />x", 0, 0, null);
有兩個關鍵問題
- 自定義標籤必須與非whispace字符(在此,x)
- 來界定當前元素的當我插入
span
元素爲<p>paragraph</p>
體拆分
,我得到<p>par<span>ahoj</span>agraph</p>
預期。如何將未知標籤全部插入body
元素的子元素中,結果(例如未知標籤x
)爲<p>par</p><x>ahoj</x><p>agraph</p>
。
這項工作讓人筋疲力盡。自從幾周以來,我就相信這個相對簡單的任務。我已經浪費了。如果插入不上班,我就廢了...所有
什麼對象類型是'AppErrors.EDITORKIT_ACTIONFAILURE'?如果'String',爲什麼不拋出新的Throwable(AppErrors.EDITORKIT_ACTIONFAILURE,ioe);'? –
沒關係。我已將帖子更新爲更全面。 –
我不確定我是否理解。 HTMLEditorKit用於呈現HTML。如果您使用非HTML標記提供它,您希望它做什麼? –