Peter, acabei fazendo um exemplinho com o scrollling lá automatico :mrgreen:
Fiquei curioso pra saber como fica, dai fiz um que parece bem esse negocio de filme :D. Dá uma olhada ai no codigo:
package samples;
import javax.swing.*;
import javax.swing.text.View;
import javax.swing.text.JTextComponent;
import javax.swing.text.StyleConstants;
import javax.swing.text.SimpleAttributeSet;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/**
* Created by IntelliJ IDEA.
* User: Administrador
* Date: 01/02/2005
* Time: 19:02:57
* To change this template use File | Settings | File Templates.
*/
public class ScrollableTextArea extends JFrame{
private JScrollPane scroll = new JScrollPane();
private JTextPane area = new JTextPane();
private JButton buttomStart = new JButton();
public ScrollableTextArea(){
super("Rollover");
init();
}
public static void main(String args[]){
ScrollableTextArea window;
window = new ScrollableTextArea();
window.setBounds(50,50,300,200);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.setVisible(true);
}
private void init(){
buttomStart.setText("Start");
buttomStart.setPreferredSize(new Dimension(0,20));
buttomStart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new Thread(){
public void run(){
int totalScroll = scroll.getVerticalScrollBar().getMaximum();
int minimoScroll = scroll.getVerticalScrollBar().getMinimum();
try{
for( int c=minimoScroll; c<totalScroll;c++ ){
scroll.getVerticalScrollBar().setValue(c);
sleep(5);
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}.start();
}
});
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
scroll.setViewportView(area);
getContentPane().add(scroll, BorderLayout.CENTER);
getContentPane().add(buttomStart, BorderLayout.SOUTH);
SimpleAttributeSet aSet = new SimpleAttributeSet();
StyleConstants.setAlignment(aSet, StyleConstants.ALIGN_CENTER);
area.setCharacterAttributes(aSet, true);
area.setParagraphAttributes(aSet, true);
area.setBackground(Color.LIGHT_GRAY);
area.setEditable(false);
area.setText("\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" +
"JMenu\n" +
"JMenuBar\n" +
"JMenuItem\n" +
"JMException\n" +
"JMRuntimeException\n" +
"JMXAuthenticator\n" +
"JMXConnectionNotification\n" +
"JMXConnector\n" +
"JMXConnectorFactory\n" +
"JMXConnectorProvider\n" +
"JMXConnectorServer\n" +
"JMXConnectorServerFactory\n" +
"JMXConnectorServerMBean\n" +
"JMXConnectorServerProvider\n" +
"JMXPrincipal\n" +
"JMXProviderException\n" +
"JMXServerErrorException\n" +
"JMXServiceURL\n" +
"JobAttributes\n" +
"JobAttributes.DefaultSelectionType\n" +
"JobAttributes.DestinationType\n" +
"JobAttributes.DialogType\n" +
"JobAttributes.MultipleDocumentHandlingType\n" +
"JobAttributes.SidesType\n" +
"JobHoldUntil\n" +
"JobImpressions\n" +
"JobImpressionsCompleted\n" +
"JobImpressionsSupported\n" +
"JobKOctets\n" +
"JobKOctetsProcessed\n" +
"JobKOctetsSupported\n" +
"JobMediaSheets\n" +
"JobMediaSheetsCompleted\n" +
"JobMediaSheetsSupported\n" +
"JobMessageFromOperator\n" +
"JobName\n" +
"JobOriginatingUserName\n" +
"JobPriority\n" +
"JobPrioritySupported\n" +
"JobSheets\n" +
"JobState\n" +
"JobStateReason\n" +
"JobStateReasons\n" +
"Joinable\n" +
"JoinRowSet\n" +
"JOptionPane\n" +
"JPanel\n" +
"JPasswordField\n" +
"JPEGHuffmanTable\n" +
"JPEGImageReadParam\n" +
"JPEGImageWriteParam\n" +
"JPEGQTable\n" +
"JPopupMenu\n" +
"JPopupMenu.Separator\n" +
"JProgressBar\n" +
"JRadioButton\n" +
"JRadioButtonMenuItem\n" +
"JRootPane\n" +
"JScrollBar\n" +
"JScrollPane\n" +
"JSeparator\n" +
"JSlider\n" +
"JSpinner\n" +
"JSpinner.DateEditor\n" +
"JSpinner.DefaultEditor\n" +
"===========================\n" +
"THE END" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n");
}
}