我试图让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));
傻我来解决。
答案 0 :(得分:0)
但是如果你用display.append(string)为它添加文本,那么文本会被添加到底部,当时可能在屏幕上,也可能不在屏幕上。
嗯,你没有说明你在原始问题中使用了append(...)方法。这就是为什么你应该总是发布一个适当的SSCCE来证明问题所以我们不必猜测你在做什么。
有关可能出现的问题和解决方案,请参阅Text Area Scrolling。