無處不在,我閱讀啓用JTextPane
的包裝方式的人的答案,但它們都不適合我。我正在使用HTMLDocument
(顯示"text/html"
內容),但迄今爲止我沒有發現任何內容。 JTextPane
始終會使JScrollPane水平滾動。我需要JTextPane是可滾動的,但是只有垂直的。使用HTMLDocument在JTextPane中啓用自動換行
是否有人有一個可行的演示文字包裝JTextPane
顯示HTML內容?
無處不在,我閱讀啓用JTextPane
的包裝方式的人的答案,但它們都不適合我。我正在使用HTMLDocument
(顯示"text/html"
內容),但迄今爲止我沒有發現任何內容。 JTextPane
始終會使JScrollPane水平滾動。我需要JTextPane是可滾動的,但是只有垂直的。使用HTMLDocument在JTextPane中啓用自動換行
是否有人有一個可行的演示文字包裝JTextPane
顯示HTML內容?
以此作爲例子來實現自定義的包(無論你需要) http://java-sl.com/tip_html_letter_wrap.html
有此問題的幾個副本,和許多答案,但沒有我發現有一個單解決問題的組件解決方案。這門課是基於斯坦尼斯拉夫解決類似問題的解決方案之一,其中包含一些變化。該解決方案使用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);
}
}
}
}
}
}
這是唯一適用於我的解決方案。然而,我有一些背靠背(背對背)的小圖片沒有用空格或單詞分隔的問題。例如,一連串沒有任何關係的表情仍然會遭受「真正長詞」問題的相同症狀。如果我找到可以編輯的簡單修復程序,我會再次發表評論。 – gunfulker
優秀!第一個工作。我以前嘗試過第二次沒有成功。謝謝! –