这可能是一个非常简单的问题,但我没有从任何地方得到任何答案。
我有一个字符串变量,它包含一个很长的段落字符串,打算放在JTextArea
上.setText(str)
;
我的问题是如何使该行的最后一个字(不适合该行的右边缘)在下一行传输。
下面的插图可能有助于解决我的问题:
问题:
The quick brown fox ju
mps over the lazy dog.
需要解决方案:
The quick brown fox
jumps over the lazy
dog.
答案 0 :(得分:4)
启用自动换行以强制“文本”区域不会包含在单词的中间。
JTextArea c = new JTextArea();
c.setLineWrap(true);
c.setWrapStyleWord(true);
来源http://www.exampledepot.com/egs/javax.swing.text/ta_Wrap.html
答案 1 :(得分:2)
JTextArea具有.setLineWrap属性。听起来就像你需要的那样。
来自Java2s.com的源代码:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;
public class MainClass extends JFrame {
static String sometext = "Text Text Text Text Text Text Text Text Text Text Text ";
public MainClass() {
super("Simple SplitPane Frame");
setSize(450, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JTextArea jt1 = new JTextArea(sometext);
JTextArea jt2 = new JTextArea(sometext);
jt1.setLineWrap(true);
jt2.setLineWrap(true);
jt1.setMinimumSize(new Dimension(150, 150));
jt2.setMinimumSize(new Dimension(150, 150));
jt1.setPreferredSize(new Dimension(250, 200));
JSplitPane sp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jt1, jt2);
getContentPane().add(sp, BorderLayout.CENTER);
}
public static void main(String args[]) {
MainClass ssb = new MainClass();
ssb.setVisible(true);
}
}
答案 2 :(得分:-2)
您可以在使用以下代码将字符串数据设置为JTextArea之前编辑它们:
StringBuffer sb=new StringBuffer(str);
sb.setCharAt(str.lastIndexOf(" "), '\n');
然后设置jtextArea.setText(sb.toString());
由于