我到处都读到人们寻找方法的答案enabling文字换行JTextPane
,但它们都不适合我。我正在使用一个HTMLDocument
(显示"text/html"
内容),到目前为止我发现没有任何东西可以让它发挥作用。这JTextPane
始终使 JScrollPane 水平滚动。我需要 JTextPane 可滚动,但是only垂直。
谁有一个可行的自动换行演示JTextPane
显示 HTML 内容?
这个问题有几个重复项,也有很多答案,但我发现没有一个可以解决该问题。此类基于 Stanislav 针对纯文本换行的类似问题的解决方案之一,并进行了一些更改。此解决方案已使用 Java 1.7.0_55 进行测试。
import javax.swing.text.Element;
import javax.swing.text.LabelView;
import javax.swing.text.StyleConstants;
import javax.swing.text.View;
import javax.swing.text.ViewFactory;
import javax.swing.text.html.HTML;
import javax.swing.text.html.HTMLEditorKit;
public class WrappedHtmlEditorKit extends HTMLEditorKit
{
private static final long serialVersionUID = 1L;
private ViewFactory viewFactory = null;
public WrappedHtmlEditorKit()
{
super();
this.viewFactory = new WrappedHtmlFactory();
return;
}
@Override
public ViewFactory getViewFactory()
{
return this.viewFactory;
}
private class WrappedHtmlFactory extends HTMLEditorKit.HTMLFactory
{
@Override
public View create(Element elem)
{
View v = super.create(elem);
if (v instanceof LabelView)
{
Object o = elem.getAttributes().getAttribute(StyleConstants.NameAttribute);
if ((o instanceof HTML.Tag) && (o == HTML.Tag.BR))
{
return v;
}
return new WrapLabelView(elem);
}
return v;
}
private class WrapLabelView extends LabelView
{
public WrapLabelView(Element elem)
{
super(elem);
return;
}
@Override
public float getMinimumSpan(int axis)
{
switch (axis)
{
case View.X_AXIS:
{
return 0;
}
case View.Y_AXIS:
{
return super.getMinimumSpan(axis);
}
default:
{
throw new IllegalArgumentException("Invalid axis: " + axis);
}
}
}
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)