在JTextArea中实现更智能的文本换行

时间:2010-08-29 22:28:16

标签: java swing user-interface

上下文

目前,我有一个像这样创建的JTextArea:

JTextArea descArea = new JTextArea();
descArea.setFont(style.getFont());
descArea.setLineWrap(true);
descArea.setName("descArea");
descArea.setToolTipText(resourceMap.getString("descArea.toolTipText"));
descArea.setText(model.getName());
JScrollPane descPane = new JScrollPane(descArea,
            JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
            JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

当用户在字段中输入内容时,它确实会换行(根据descArea.setLineWrap(true)),但是通过破坏以下示例中的单词会有点笨拙:

alt text

我们软件的用户希望包装更加巧妙,并自动生成更像:

alt text

一般的想法是,当他们键入最后一个'th'时,它们一直向下移动到第二行以及插入点,因为它们键入(以类似于几乎所有其他文本编辑器的方式)。


问题

我最初的想法是使用Key Listener手动实现这种包装,但我想知道是否有更好的方法/不同的组件可以更容易地实现这个功能?

1 个答案:

答案 0 :(得分:7)

它已经实施。

  textArea.setWrapStyleWord(true);