I looked at Scroll JScrollPane to bottom and found the answer =>
JScrollBar vertical = scrollPane.getVerticalScrollBar();
vertical.setValue( vertical.getMaximum() );
to work very well.
However it doesn't go right to the bottom when there's a lot of output.
I've now added a delay (not from the EWT) and then another update in the EWT, which does the trick.
Thread thread = Thread.currentThread();
try {
thread.sleep(99);
} catch (InterruptedException ex) {
}
SwingUtilities.invokeLater(new Runnable() {
public void run() { log(""); }
});