Установить последнее слово строки на следующую строку в jtextarea - PullRequest
2 голосов
/ 20 июня 2011

Это может быть очень простой вопрос, но я нигде не получаю ответов.

У меня есть строковая переменная, которая содержит очень длинную строку абзаца и предназначена для размещения на JTextArea, .setText(str);

Моя проблема в том, как сделать так, чтобы последнее слово строки (не подходящее к правому краю этой строки) было перенесено на следующую строку.

Иллюстрация ниже может помочь моей проблеме:

Проблема:

The quick brown fox ju
mps over the lazy dog.

Требуется решение:

The quick brown fox
jumps over the lazy
dog.

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Включить перенос слов, чтобы область текста не переносилась в середине слова.

JTextArea c = new JTextArea();
c.setLineWrap(true);
c.setWrapStyleWord(true);

Источник http://www.exampledepot.com/egs/javax.swing.text/ta_Wrap.html

2 голосов
/ 20 июня 2011

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);
  }
}
0 голосов
/ 20 июня 2011

Вы можете редактировать свои данные String непосредственно перед установкой их в JTextArea, используя следующий код:

    StringBuffer sb=new StringBuffer(str);
sb.setCharAt(str.lastIndexOf(" "), '\n');

Затем после установки jtextArea.setText (sb.toString ());

Спасибо

...