Line numbers e vertical scrolling

5 respostas
pplupo

Galera, sou um pouco fraco de swing, entao aih vai…

Alguem tem um exemplo de um componente tipo JEditorPane ou JTextArea que mostre os numeros das linhas, como um editor de codigo?

Tb estou procurando um exemplo de um label ou outro componente nao editavel do genero que eu possa carregar um string e ele faca scroll vertical, como um letreiro daqueles de final de filme… ;¬)

Abraco,
Peter

5 Respostas

brlima

Essa do JEditorPane ai eu não tenho ideia.
Qto ao scroll… tenta colocar dentro de um TextArea nao editavel ( que esteja dentro de um scrollpane ). dai fala pra não mostrar os scrolls E a partir de uma thread vai descendo o scroll… :smiley: Acho que funciona.

pplupo

Obrigado pela resposta…

O problema eh q tem q ser num Label ou frame ou qq coisa do tipo… por causa do layout da janela… nao dah pra ser um textArea…

Abraco,
Peter

brlima

mas o l ayout não deveria ser problema pra isso. Tanto o JLabel qto o JTextArea dentro de um ScrolLPane são componentes.

pplupo

Eh, cheguei a pensar nisso depois que respondi… vou tentar depois… muito obrigado.

Abraco,
Peter

brlima

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");

    }

}
Criado 31 de janeiro de 2005
Ultima resposta 2 de fev. de 2005
Respostas 5
Participantes 2