Все,проблемы с прокруткой java TextArea
У меня проблема с использованием JTextArea и JScrollPane. По какой-то причине панель прокрутки, по-видимому, не распознает последнюю строку в документе и будет прокручиваться до линии до нее. Полоса прокрутки даже не переходит в состояние, когда я могу сдвинуть ее, пока строки в документе не будут больше, чем количество строк, отображаемых в textArea (это должно произойти, как только оно станет больше).
Кто-нибудь сталкивался с этим раньше? Что было бы хорошим решением (я хочу, чтобы не добавлять лишнюю «пустую» строку в конец документа, которую я должен был бы удалить каждый раз, когда добавляю новую строку)?
Вот как я экземпляр TextArea и ScrollPane:
JFrame frame = new JFrame("Java Chat Program");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container pane = frame.getContentPane();
if (!(pane.getLayout() instanceof BorderLayout)) {
System.err.println("Error: UI Container does not implement BorderLayout.");
System.exit(-1);
}
textArea = new JTextArea();
textArea.setPreferredSize(new Dimension(500, 100));
textArea.setEditable(false);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
JScrollPane scroller = new JScrollPane(textArea);
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
pane.add(scroller, BorderLayout.CENTER);
Вот метод я использую, чтобы добавить новую строку в текстовое поле:
public void println(String a)
{
textArea.append(" "+a+"\n");
textArea.setCaretPosition(textArea.getDocument().getLength());
}
Спасибо за вашу помощь,
Jonathan
EDIT: Кроме того, в качестве примечания стороны, с текущим кодом, я должен вручную свернуться вниз. Я предположил, что setCaretPosition (doc.getLength()) в методе println (line) автоматически установит страницу внизу после ввода строки ... В этом случае, или мне нужно сделать что-то по-другому?
спасибо. =) – Jonathan