我有一个很长的字符串,它不适合我所说的JPanel。 text是记录器而不是JPanel宽度。我不能把“\ n”放到字符串中来打破字符串,实际上我无法控制字符串的长度和内容。它用户输入了字符串。我想要做的是当我将文本放在JPanel上时,我希望任何不适合JPanel的文本流入下一行。
有点难以解释。如果您需要更多详细信息,请与我们联系。
谢谢
答案 0 :(得分:1)
从快速谷歌搜索我已经读过,从逻辑上讲,所有操作系统都有不同的换行符,并且由于Java是独立于平台的,您需要先使用以下方法找到相对分隔符:
lineSeparator = (String) java.security.AccessController.doPrivileged(new sun.security.action.GetPropertyAction("line.separator"));
然后将您的字符串与lineSeparator
例如:
JLabel label = new JLabel("Hello"+lineSeparator+"world");
这种方法没有经过我的测试和测试,只是我研究的结果。
至于处理溢出文本,我的个人经验是在字符离开框架之前找到字符的最大长度,然后添加lineSeparator
答案 1 :(得分:1)
将文字放在<html></html>
标签内可以解决问题。长行将自动换行。
JLabel label = new JLabel("<html>"+ reallyLongString + "</html>");
label.setPreferredSize(new Dimension(1, 1);
答案 2 :(得分:1)
尝试使用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();
}
});
}
}