Rom*_*las 7 java swing jtextpane
在我的应用程序中,我使用a JTextPane
来显示一些日志信息.由于我想高亮显示本文中的某些特定行(例如错误消息),因此我将其设置contentType
为" text/html
".这样,我可以格式化我的文本.
现在,我创建一个JButton,将其内容复制JTextPane
到剪贴板中.这部分很简单,但我的问题是,当我打电话时myTextPane.getText()
,我会得到HTML代码,例如:
<html>
<head>
</head>
<body>
blabla<br>
<font color="#FFCC66"><b>foobar</b></font><br>
blabla
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
而不是只获取原始内容:
blabla
foobar
blabla
Run Code Online (Sandbox Code Playgroud)
有没有办法只获取我JTextPane
的纯文本内容?或者我是否需要自己将HTML转换为原始文本?
cam*_*ckr 17
无需使用ParserCallback.只需使用:
textPane.getDocument().getText(0, textPane.getDocument().getLength()) );
Run Code Online (Sandbox Code Playgroud)
基于以下公认的答案:从Java字符串中删除HTML
MyHtml2Text parser = new MyHtml2Text();
try {
parser.parse(new StringReader(myTextPane.getText()));
} catch (IOException ee) {
//handle exception
}
System.out.println(parser.getText());
Run Code Online (Sandbox Code Playgroud)
Html2Text
在我链接的答案上找到的类的略微修改版本
import java.io.IOException;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
public class MyHtml2Text extends HTMLEditorKit.ParserCallback {
StringBuffer s;
public MyHtml2Text() {}
public void parse(Reader in) throws IOException {
s = new StringBuffer();
ParserDelegator delegator = new ParserDelegator();
delegator.parse(in, this, Boolean.TRUE);
}
public void handleText(char[] text, int pos) {
s.append(text);
s.append("\n");
}
public String getText() {
return s.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要更精细的处理,请考虑实现更多定义的接口 HTMLEditorKit.ParserCallback
归档时间: |
|
查看次数: |
10021 次 |
最近记录: |