2011-08-12 53 views
5

在JTextPane中實現字換行的確切程度如何?如何在JTextPane中實現單詞包裝,以及如何讓它包裝不帶空格的字符串?

我想明白它是如何工作的,以便我可以修改行爲。現在,如果我在JScrollPane中有一個標準的JTextPane,它將在空格處打斷文本,但不會在長詞中打開 - 如果有一串沒有比窗口寬的空格的文本,它將不會打包/一個水平滾動條會出現。隨着文本寬度的增加,ParagraphView的寬度(通過getWidth())增加以保存文本。

This article by Lapitsky說LabelView.getBreakWeight()返回View.ExcellentBreakWeight與空間和View.GoodBreakWeight爲標籤不帶空格的標籤(在GlyphView.java代碼似乎證實了這一點),那麼,爲什麼不打破它?它以某種方式返回BadBreakWeight而不是GoodBreakWeight?還是有一些佈局問題?還是有錯誤?

下面是一些代碼(爲您的觀賞樂趣):

//somewhere inside JPanel or JFrame constructor 
JTextPane textPane = new JTextPane(); 
JScrollPane scrollPane = new JScrollPane(textPane); 
add(scrollPane); 

注意,它仍然如果我拿出滾動面板,只需使用文本窗格不換行(它只是被剪掉,因爲它去窗外)。似乎


爲Swing的javadoc沒有進入足夠的細節上的一些對象(如JTextPane中,查看的,和相關對象)如何一起工作。是否還有關於這些課程設計的進一步文件,可能會詳細說明每個課程的目的以及它們如何一起工作?它只是不公開嗎? (還是我具有這樣的事情煩惱的唯一一個?或者是沒有足夠的文件限於東西預計不會被一個典型的開發與處理?)

回答

4

有關自定義包(強制包裝和鏈接無包裝)。 http://java-sl.com/wrap.html

關於信的鏈接包裹 http://java-sl.com/tip_html_letter_wrap.html

+1

給出的示例中的工作,但換行被忽略!試一下你的第二個鏈接:'htmlTextPane.setText(「firstLine
secondLine
thirdLine
'。這將支持換行,但'
'換行符被忽略。我還沒有能夠解決這個問題,甚至通過將代碼摘錄與可以在[這裏]找到的相應原始方法混合(http://grepcode.com/file_/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/擺動/文本/ HTML/HTMLEditorKit.java /?v =源)和[這裏](http://developer.classpath.org/doc/javax/swing/text/View-source.html)。 – Blauhirn

+0

第二連桿是真的是我想要的..謝謝你張貼它! – Panayotis