Habilitar el ajuste de palabras en un JTextPane con HTMLDocument

En todas partes leo respuestas de personas que encuentran formas de habilitar el JTextPane palabras en un JTextPane , pero ninguna de ellas funciona para mí. Estoy usando un HTMLDocument (para mostrar el contenido "text/html" ) y nada de lo que he encontrado hasta ahora lo hizo funcionar. El JTextPane siempre hace que JScrollPane se desplace horizontalmente. Necesito que JTextPane sea desplazable, pero solo verticalmente.

¿Alguien JTextPane tener una demostración funcional de una palabra envolviendo JTextPane mostrando contenido HTML?

Use esto como ejemplo para implementar un ajuste personalizado (lo que necesite) http://java-sl.com/tip_html_letter_wrap.html

http://java-sl.com/wrap.html

Hay varios duplicados de esta pregunta y muchas respuestas, pero ninguna que haya encontrado tiene una solución de un solo componente para el problema. Esta clase se basa en una de las soluciones de Stanislav a un problema similar con el ajuste de texto sin formato, con algunos cambios. Esta solución se prueba con 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); } } } } } }