我有一个可编辑的 JTextpane ,并希望启用HTML,以便初始文本显示为格式。但是,这有效,现在字符串中的第一个字符是'\ n',这意味着该字符串比预期长1个字符。我可以删除它(例如,对于单词'foo',我可以按退格键4次以先删除单词然后再删除'\ n')。
显然,如果我马上只有所需的字符串,我会更喜欢它,之后没有任何删除它的技巧。我将不胜感激任何帮助!
这是我的示例代码:
JTextPane testPane = new JTextPane();
testPane.setContentType("text/html");
testPane.setText("<html><body><span style='color:red'>My Text which will have a newline at the beginning.</span></body></html>");
// testPane.setText("the same newline at the start even without the HTML tags");
StyledDocument doc = testPane.getStyledDocument();
SimpleAttributeSet myAttributeSet = new SimpleAttributeSet();
StyleConstants.setFontSize(myAttributeSet, 14);
StyleConstants.setFontFamily(myAttributeSet, Font.DIALOG);
doc.setParagraphAttributes(0, doc.getLength(), myAttributeSet, false);
testPane.setDocument(doc);
myGridPanel.add(testPane, gbc);
请注意,无论我是否拥有所有此标记信息(即''),都会显示换行符。
我很感激任何关于我做错了什么的提示,或者我应该做些什么以避免在开始时出现这个额外的角色。
提前致谢!
答案 0 :(得分:1)
您看到的\n
是文档中为头部保留的位置。
小心,这也意味着身体从char 1开始。之前你写的所有东西都不会显示出来。
如果您不需要,可以这样做:
public static void removeHead(JTextPane testPane) {
javax.swing.text.Element head = testPane.getDocument().getDefaultRootElement().getElement(0);
if(head.getName().equals("head")) {
try {
testPane.getDocument().remove(0, head.getEndOffset());
} catch (BadLocationException ex) {
Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
}
}
}