2011-10-18 23 views
4

無處不在,我閱讀啓用JTextPane的包裝方式的人的答案,但它們都不適合我。我正在使用HTMLDocument(顯示"text/html"內容),但迄今爲止我沒有發現任何內容。 JTextPane始終會使JScrollPane水平滾動。我需要JTextPane是可滾動的,但是只有垂直的使用HTMLDocument在JTextPane中啓用自動換行

是否有人有一個可行的演示文字包裝JTextPane顯示HTML內容?

回答

1

有此問題的幾個副本,和許多答案,但沒有我發現有一個單解決問題的組件解決方案。這門課是基於斯坦尼斯拉夫解決類似問題的解決方案之一,其中包含一些變化。該解決方案使用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); 
        } 
       } 
      } 
     } 
    } 
} 
+1

這是唯一適用於我的解決方案。然而,我有一些背靠背(背對背)的小圖片沒有用空格或單詞分隔的問題。例如,一連串沒有任何關係的表情仍然會遭受「真正長詞」問題的相同症狀。如果我找到可以編輯的簡單修復程序,我會再次發表評論。 – gunfulker