这可能是一个非常简单的问题,但我没有从任何地方得到任何答案。
我有一个字符串变量,它包含一个很长的段落字符串,并打算由.setText(str)
放置在JTextArea
上;
我的问题是如何将这行的最后一个单词(不适合该行的右边缘)转移到下一行。
下面的插图可能会帮助我解决问题:
问题:
The quick brown fox ju
mps over the lazy dog.
所需解决方案:
The quick brown fox
jumps over the lazy
dog.
启用单词换行,以强制文本区域不换行到单词中间。
JTextArea c = new JTextArea();
c.setLineWrap(true);
c.setWrapStyleWord(true);
来源http://www.exampledepot.com/egs/javax.swing.text/ta_Wrap.html
JTextArea具有.setLineWrap属性。听起来这正是你所需要的。
JTextArea API 区域
源代码来自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);
}
}
在将字符串数据设置为JTextArea之前,您可以使用以下代码对其进行编辑:
StringBuffer sb=new StringBuffer(str);
sb.setCharAt(str.lastIndexOf(" "), 'n');
然后在设置jtextArea.setText(sb.toString())之后;
感谢