我有一個很長的字符串,它不適合JPanel我把它。 文本比JPanel寬度記錄器。我不能把字符串「\ n」打破字符串,實際上我沒有控制字符串的長度和內容。它用戶輸入的字符串。我想要做的是,當我將文本放在JPanel上時,我想讓任何不適合JPanel的文本流入下一行。在Java中如何使溢出文本轉到下一行
其種類很難解釋。如果您需要更多詳細信息,請告訴我。
謝謝
我有一個很長的字符串,它不適合JPanel我把它。 文本比JPanel寬度記錄器。我不能把字符串「\ n」打破字符串,實際上我沒有控制字符串的長度和內容。它用戶輸入的字符串。我想要做的是,當我將文本放在JPanel上時,我想讓任何不適合JPanel的文本流入下一行。在Java中如何使溢出文本轉到下一行
其種類很難解釋。如果您需要更多詳細信息,請告訴我。
謝謝
嘗試使用JTextPane代替它,它將爲您處理wordwrapping。
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.SwingUtilities;
public class Wordwrap extends JFrame {
public Wordwrap() {
String s = "I have a long string which doesn't fit to the JPanel i am putting it. text is logger than the JPanel width. I can not put \n to the string to break the string, in fact i don't have the control over the length and content of the string. It user inputted string. What i want to do is when i am putting the text on JPanel i want any text that doesn't fit in to the JPanel to flow in to the next Line.";
JTextPane textPanel = new JTextPane();
textPanel.setText(s);
textPanel.setPreferredSize(new Dimension(500, 100));
JPanel p = new JPanel();
p.add(textPanel);
getContentPane().add(p);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
pack();
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
new Wordwrap();
}
});
}
}
也喜歡這個。謝謝 – printfmyname
從快速谷歌搜索我讀過,從邏輯上講,所有操作系統的都不同換行符和Java是獨立於平臺,你需要使用首先找到的相對分離:
lineSeparator = (String) java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("line.separator"));
,然後拼接你的字符串lineSeparator
例如:
JLabel label = new JLabel("Hello"+lineSeparator+"world");
這個方法是未經過測試和未經測試的,僅僅是我的研究結果。
至於處理四溢的文字,我個人的經驗是要找到字符的最大長度它超出框架之前,然後添加在lineSeparator
問題是用戶正在輸入測試。當他們輸入文字並按提交。我把這個文本放在面板上。 現在我不知道字符串有多長。例如,當你在css中有一些叫做overflowX和溢出(類似的東西)的時候。當overflowX啓用時會發生什麼,如果用戶輸入的文本不適合它駐留的容器的寬度,則它將繼續打印到下一個線。 – printfmyname
這正是我需要的 – printfmyname
好吧,我不是一個狂熱的Java用戶,所以我不能提供太多的幫助,但另一個研究的快速位置表明你想要計算行長度並在X個字符後面添加'lineSeparator '。我會用for循環來計算'string.length()',但是修改字符串以包含'lineSeparator'我無法提供幫助。 – Timmy
把裏面<html></html>
標籤文本會做的伎倆。長行將被自動換行。
JLabel label = new JLabel("<html>"+ reallyLongString + "</html>");
label.setPreferredSize(new Dimension(1, 1);
這是一個壞主意。如果文本包含不等式「k <3」會怎麼樣? – nes1983
謝謝,這個工程,如果你知道更多的方法,請讓我知道。 – printfmyname
@ nes1983你是什麼意思是不等式「k <3」,會發生什麼。 – printfmyname
正在使用什麼來顯示文本?顯示一些代碼。 –