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