簡體   English   中英

JTextPane 中的自動換行是如何實現的,我如何讓它包裝一個沒有空格的字符串?

[英]How is word-wrapping implemented in JTextPane, and how do I make it wrap a string without spaces?

JTextPane 中的自動換行究竟是如何實現的?

我試圖准確地了解它是如何工作的,以便我可以修改行為。 現在,如果我在 JScrollPane 中有一個標准的 JTextPane,它會在空格處打斷文本,但不會在長詞內打斷 - 如果有一串沒有空格的文本比 window 寬,它不會換行/打斷和將出現一個水平滾動條。 隨着文本寬度的增加,ParagraphView 的寬度(通過 getWidth())增加以容納文本。

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 的 javadocs 似乎對 go 沒有足夠詳細地說明某些對象(如 JTextPane、View 和相關對象)如何協同工作。 是否有任何關於此類設計的進一步文檔,也許詳細說明每個 class 的目的以及它們如何協同工作? 它只是不公開嗎? (或者我是唯一一個遇到此類問題的人嗎?或者文檔不足是否僅限於典型開發人員不會處理的事情?)

關於自定義換行(強制換行和不換行)的鏈接。 http://java-sl.com/wrap.html

關於字母換行 http://java-sl.com/tip_html_letter_wrap.html的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM