[RESOLVIDO] jLabel estilo Letreiro Digital

2 respostas
laurovitor

Ola.

Ja dei uma pesquisada aqui no forum e nao achei nada parecido com o que eu preciso fazer e como eu ainda so novo em java nao sei como fazer tmb.

bom o que eu tava querendo fazer era o seguinte.

eu tenho um jLabel q tem um texto que e obtido da minha database

eu queria que esse texto ficasse correndo sabe da direita para a esquerda estilo um letreiro digital so q nao tenho a minima ideia de como fazer isso se alguem puder ao menos dar uma luz eu ja fico agradecido.

eu ate tentei colocar uma tag html dentro do jLabel pq eu sei q ele aceita alguns comando html mais nao deu certo.

esse e o jLabel

jLabel2 = new JLabel("<html><body><marquee>TEXTO VEM AQUI!!!</marquee></body></html>");
        jLabel2.setForeground(Color.GREEN);
        getContentPane().add(jLabel2, BorderLayout.NORTH);

se alguem souber como me ajudar ou dar uma dica obrigado.

2 Respostas

E

O tag “marquee” não é suportado pelo HTML bastante limitado que o Swing implementa em algumas partes. Você precisa usar um timer (de preferência um javax.swing.Timer).

laurovitor

bom consegui fazer o letreiro…

vou postar aqui o exemplo q eu achei na net e usei como base.

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;

public class MarqueeFrame extends JFrame implements ActionListener {
    private Timer timer;
    private MarqueePanel marqueePanel;

    public void actionPerformed(ActionEvent e) {
        marqueePanel.moveLabel();
    }

    public MarqueeFrame() {
        Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(d.width,d.height);
        setTitle("Teste Letreiro Digital");
        setResizable(false);

        timer = new Timer(10, this); // Velocidade do Timer
        marqueePanel = new MarqueePanel(timer);
        add(marqueePanel);
        timer.start(); // começa a mover o letreiro
        // timer.stop(); // para de mover o letreiro
    }

    public static void main(String[] args) {
        new MarqueeFrame().setVisible(true);
    }
}

class MarqueePanel extends JPanel {
    private int xLoc, yLoc;
    private Dimension dimension;
    private JLabel jLabel1;
    private Timer timer;

    public MarqueePanel(final Timer timer) {
        this.timer = timer;
        setLayout(null);
        dimension = Toolkit.getDefaultToolkit().getScreenSize();
        xLoc = dimension.width;
        yLoc = 0;
        jLabel1 = new JLabel("DIGITE O TEXTO AQUI!!!");
        jLabel1.setForeground(Color.BLUE);

        add(jLabel1,BorderLayout.NORTH);
        moveLabel();
    }

    public void moveLabel() {
        Rectangle r = new Rectangle();

        r.x = xLoc;
        r.y = yLoc;
        Dimension size = jLabel1.getPreferredSize();
        r.width = size.width;
        r.height = size.height;
        jLabel1.setBounds(r);

        xLoc -= 1;
        if (xLoc < -jLabel1.getWidth() )
            xLoc = dimension.width;
    }
}

=]

Criado 22 de novembro de 2010
Ultima resposta 23 de nov. de 2010
Respostas 2
Participantes 2