+ // autoscroll
+ DefaultCaret caret = (DefaultCaret) textArea.getCaret();
+ caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
+ // toggle autoscroll by clicking on the text area
+ Border pausedBorder = BorderFactory.createMatteBorder(2, 2, 2, 2,
+ textArea.getForeground());
+ Border noBorder = BorderFactory.createEmptyBorder(2, 2, 2, 2);
+ JScrollPane scrollPane = new JScrollPane(textArea);
+ scrollPane.setBorder(noBorder);
+ textArea.addMouseListener(new MouseAdapter()
+ {
+ public void mouseClicked(MouseEvent e)
+ {
+ if (e.getButton() == MouseEvent.BUTTON1)
+ {
+ if (caret.getUpdatePolicy() == DefaultCaret.ALWAYS_UPDATE)
+ {
+ caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
+ scrollPane.setBorder(pausedBorder);
+ }
+ else
+ {
+ caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
+ textArea.setCaretPosition(textArea.getDocument().getLength());
+ scrollPane.setBorder(noBorder);
+ }
+ }
+ }
+ });
+