带有JScrollPane的JTextArea在完全滚动后不会滚动

时间:2014-04-25 19:24:42

标签: java swing user-interface textarea scrollable

我试图让JTextArea在填充文本时可滚动但是当我添加一个JScrollPane时,它只是添加了一个不做任何事情的滚动条。当我添加的文字多于我的JTextArea可以显示的文字时,它不会改变,也不会再添加任何文字。

    Container window = getContentPane();
    window.setLayout(new FlowLayout());

    display = new JTextArea(TEXT_AREA_ROWS, TEXT_AREA_COLUMNS);
    display.setLineWrap(true);
    display.setPreferredSize(TEXT_AREA_DIMENSIONS);
    display.setBackground(TEXT_BG_COLOR);
    display.setForeground(TEXT_COLOR);
    display.setEditable(false);
    display.setFont(TEXT_FONT);
    window.add(display);

    scroll = new JScrollPane(display);
    scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    scroll.setPreferredSize(display.getPreferredSize());
    window.add(scroll);

先谢谢

编辑:意识到我的错误,我设置了textArea的首选大小而不是scrollPane。 这可以通过删除display.setPreferredSize(TEXT_AREA_DIMENSIONS);并添加scroll.setPreferredSize(new Dimension(width, height));傻我来解决。

1 个答案:

答案 0 :(得分:0)

  

但是如果你用display.append(string)为它添加文本,那么文本会被添加到底部,当时可能在屏幕上,也可能不在屏幕上。

嗯,你没有说明你在原始问题中使用了append(...)方法。这就是为什么你应该总是发布一个适当的SSCCE来证明问题所以我们不必猜测你在做什么。

有关可能出现的问题和解决方案,请参阅Text Area Scrolling