阻止JTextArea扩展

时间:2013-10-05 19:05:55

标签: java swing jtextarea

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

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

文本区域设置如下:

     text = new JTextArea(11, 30); 

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

2 个答案:

答案 0 :(得分:8)

JTextArea放在JScrollPane内,然后将滚动窗格添加到容器中

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

有关详细信息,请参阅How to use Scroll Panes

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

同时查看JTextArea#setLineWrapJTextArea#setWrapStyleWord,这将影响该组件如何处理超出可查看宽度的文字。

有关详细信息,请参阅How to use Text Areas

答案 1 :(得分:2)

默认情况下,您可以将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);
    }

}

textArea example