Meu problema é o seguinte. Tenho um JScrollPane e um JTextArea adicionado neste. O Scroll funciona perfeitamente. Mas eu queria que ele rolasse automaticamente à medida que a página (JTextArea) fosse aumentando o número de linhas.
Olha só,
geralmente isso de a scroll acompanhar, faz automatico…
tente setLineWrap(true);
Não sei bem o que faz isso hehehehe
Tchauzin!
fabiofalci
Mas o scroll acompanha o texto, nao?
Olha esse exemplo
importjava.awt.BorderLayout;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Calendar;importjava.util.Random;importjavax.swing.JFrame;importjavax.swing.JPanel;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.Timer;/** * @author fabiofalci */publicclassAutoScrollextendsJPanelimplementsActionListener{privateJTextAreatextArea;privateRandomrandom=newRandom(Calendar.getInstance().getTimeInMillis());publicAutoScroll(){this.initialize();this.initThread();}protectedvoidinitialize(){this.setLayout(newBorderLayout());this.textArea=newJTextArea();this.add(newJScrollPane(this.textArea),BorderLayout.CENTER);}publicvoidinitThread(){Timert=newTimer(600,this);t.start();}publicvoidactionPerformed(ActionEvente){byte[]b=newbyte[this.random.nextInt(20)];this.random.nextBytes(b);// int position = this.textArea.getCaretPosition();// this.textArea.insert(new String(b) + "\n", position);this.textArea.append(newString(b)+"\n");}publicstaticvoidmain(String[]args){JFrameframe=newJFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);AutoScrollauto=newAutoScroll();frame.setContentPane(auto);frame.setSize(300,200);frame.setVisible(true);}}
ViniGodoy
Seu exemplo depende que o cursor esteja posicionado ao final da JTextArea para funcionar. Ou seja, o autoscroll para se o usuário clicar em qualquer linha do texto.
Para resolve isso, você pode também modificar manualmente a posição do Scroll: