将行的最后一个单词设置为 jtextarea 中的下一行

发布于 2024-11-16 09:20:13 字数 372 浏览 2 评论 0原文

这可能是一个非常简单的问题,但我没有从任何地方得到任何答案。

我有一个字符串变量,它保存一个很长的段落字符串,并且旨在通过 .setText(str) 放置在 JTextArea 上;

我的问题是如何使该行的最后一个单词(不适合该行的右边缘)转移到下一行。

下面的插图可能会帮助我的问题:

问题:

The quick brown fox ju
mps over the lazy dog.

需要解决方案:

The quick brown fox
jumps over the lazy
dog.

This may be a very simple question but I don't get any answers from anywhere.

I have a string variable that holds a very long paragraph string, and is intended to be placed on a JTextArea, by .setText(str);

My problem is how to make the last word of the line (that do not fit to the right edge on that line) to be transferred on the next line.

An illustration below may help my problem:

Problem:

The quick brown fox ju
mps over the lazy dog.

Solution needed:

The quick brown fox
jumps over the lazy
dog.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

櫻之舞 2024-11-23 09:20:13

启用自动换行以强制文本区域不在单词中间换行。

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

来源 http://www.exampledepot.com/egs/javax.swing。文本/ta_Wrap.html

Enable Word wrapping to force the Text area to not wrap in the middle of a word.

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

Source http://www.exampledepot.com/egs/javax.swing.text/ta_Wrap.html

夜血缘 2024-11-23 09:20:13

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);
  }
}

The JTextArea has a .setLineWrap property. Sounds like thats what you need.

JTextArea API

Source code from 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);
  }
}
下壹個目標 2024-11-23 09:20:13

您可以在使用以下代码将字符串数据设置为 JTextArea 之前对其进行编辑:

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

然后在 set jtextArea.setText(sb.toString()); 之后

谢谢

You can edit your String data just before setting it to the JTextArea using the below code:

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

Then after set jtextArea.setText(sb.toString());

Thanks

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文