Bannière en swing : texte défilant sur un jlabel

Description

Ce code permet de faire défiler un texte sur un JLabel. Il est composé de deux classes : Banniere qui permet de définir la fenêtre et de dessiner le texte, et Animateur qui redessine le texte de la bannière à intervalle de temps régulier.

Source / Exemple :


package fr.julien.banniere;

import javax.swing.BorderFactory;
import javax.swing.JLabel;

public class Banniere extends JLabel {

	private static final long serialVersionUID = 3735654525346318621L;
	private final static String ESPACE = " ";
	
	private String texte;
	private int tailleTampon;
	private int position;
	private Animateur animateur;
	
	public Banniere(String texte, int tailleTampon){
		super();
		this.texte = texte;
		this.tailleTampon = tailleTampon;
		position=0;
		setBorder(BorderFactory.createEtchedBorder());
		this.animateur=new Animateur(this);
	}

	public void avancer(){
		if(position++>tailleTampon+texte.length()){
			position=0;
		}
		dessiner();
	}
	
	private void dessiner(){
		int init=0;
		if(tailleTampon-position<0){
			init=Math.min(position-tailleTampon, texte.length());
		}
		String debut=(texte.substring(init, Math.min(position, texte.length())));
		setText(espaces(Math.max(0, tailleTampon-position))+debut);
		repaint();
	}
	
	private static String espaces(int nombre){
		StringBuilder sb = new StringBuilder();
		for(int i=0; i<nombre; i++){
			sb.append(ESPACE);
		}
		return sb.toString();
	}
	
	public void start(){
		animateur.start();
	}
	
	
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.