3

我正在尝试从数据文件中读取信息并将其处理为JTextArea我正在制作的学期项目的 about 文件。问题是,当我这样做时,scanner.nextLine()它会扩展文本区域以适应文本,而我想要的是保持文本区域的大小相同,并且如果当前行上的空间不足,则开始

    if(event.getSource() == forward)
    {
        text.setText(s.nextLine());
    }

文本区域设置如下:

     text = new JTextArea(11, 30); 

基本上我想知道的是,如果当前已满,文本区域是否提供(我看过)将空间重新定位到下一行的方法。如果在文本区域中没有办法,我很可能只编辑数据文件。

4

2 回答 2

10

将其JTextArea放在 aJScrollPane中并将滚动窗格添加到您的容器中

text = new JTextArea(11, 30);
JScrollPane scrollpane = new JScrollPane(text);
//...
add(scrollpane);

有关详细信息,请参阅如何使用滚动窗格

这将防止滚动窗格在当前容器中增长。

还要检查一下JTextArea#setLineWrapJTextArea#setWrapStyleWord这将影响组件如何处理超出可视宽度的文本。

有关更多详细信息,请参阅如何使用文本区域

于 2013-10-05T19:22:36.490 回答
3

您可以使用JTextArea#setLineWrap(true)默认设置为 false。

设置文本区域的换行策略。如果设置为 true,如果行太长而无法容纳在分配的宽度内,则行将被换行。如果设置为 false,则将始终展开行。更改策略时会触发 PropertyChange 事件(“lineWrap”)。默认情况下,此属性为 false。

另请参阅此方法JTextArea#setWrapStyleWord(true)

以 SSCCE 为例:

   public class JTextAreaTest {

    public static void main(String args[]){

        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        frame.add(panel);
        JTextArea textArea = new JTextArea(11,30);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        textArea.setText("Hi how are you? Im testing this textarea and im seeing if it's wrapping words");
        textArea.append("SASASASASDASDASDASDASDASDADSASDASDASDASDAS");
        JScrollPane scrollPane = new JScrollPane(textArea);
        panel.add(scrollPane);

        frame.pack();
        frame.setVisible(true);
    }

}

文本区域示例

于 2013-10-05T19:11:17.050 回答