Suite à une demande sur le chat, voici une simple solution pour défiler de texte Horizontalement dans un JTextField.
La solution n?est pas la meilleure peut être, mais elle fonctionne ;). Elle utilise un thread avec sleep + interface persol.
Dsl pour les commentaires, pas beaucoup 2 temps cette période et c?est très vite fait.
J?espère qu?elle répondre à ses besoins et pourra finir sa machine à café :p.
Bn courage.
Source / Exemple :
/**
- Classe : Animation.java
- author : davidauche
- Date : 2-05-2006
public class Animation extends Thread {
private MyInterface myInterface = null;
private String txtAfficher="";
private String buf="";
private int vitesse = 400;
private int counter=0;
/**
Animation (){}
Animation(String text){
this.txtAfficher = text;
}
/**
public void addMyListener(MyInterface listener){
this.myInterface = listener;
}
/**
public void run() {
while (true) {
try {
Thread.sleep(vitesse); // faire une pause au thread.
}catch (InterruptedException e) {};
if(counter==txtAfficher.length() ) counter =0;
counter += 1;
buf = txtAfficher.substring(counter) + " - " + txtAfficher.substring(0,counter) ;
this.afficher(buf);
}
}
/**
- afficher : afficher le texte dans JTextField via notre interface.
public void afficher(String text){
myInterface.afficherText("Voila un test : " + text );
}
/**
- setTextAfficher : changer le texte à afficher.
public void setTextAfficher(String text){
this.txtAfficher = text;
}
/**
- setVitesse : changer la vitesse de défilement.
- En millisecond, c'est la valeur donnée à sleep d'un Thread
- pour faire une pause.
public void setVitesse(int vitesse){
this.vitesse = vitesse;
}
/**
- reset : counter = 0. recommencer le défilement.
public void reset(){
this.counter = 0;
afficher(this.txtAfficher);
}
}
/*###########################################################*/
/**
- MyInterface.java
- Une seule méthode : afficherText
-
- author : davidauche
- Date : 02-05-2006
public interface MyInterface {
public void afficherText(String text);
}
/*###########################################################*/
/**
- Classe Defilement.java
- author : davidauche
- Date : 02-05-2006
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Defilement extends JFrame implements MyInterface {
private JTextField txtField;
private JButton btnStart, btnPause, btnReset;
private Animation animation= new Animation("Défilement Horizontal de texte dans un JTextField.");
/**
public Defilement(){
super ("Défilement Horizontal de texte dans un JTextField");
setSize(450,100);
txtField = new JTextField();
btnStart = new JButton("Start");
btnPause = new JButton("Pause");
btnReset = new JButton("Reset");
animation.addMyListener(this);
animation.setVitesse(300); // modifier la vitesse.
animation.start();
/* boutton Strat */
btnStart.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
animation.resume();
}
});
/* boutton Pause */
btnPause.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
animation.suspend();
}
});
/* boutton Reset */
btnReset.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
animation.reset();
}
});
txtField.setFont(new Font("Arial",Font.BOLD,13)) ;
txtField.setForeground(Color.RED);
/* ajouter les composants */
this.setLayout(new GridLayout(2,0));
JPanel contBtn = new JPanel();
contBtn.setLayout(new GridLayout(0,3));
contBtn.add(btnStart);
contBtn.add(btnPause);
contBtn.add(btnReset);
this.getContentPane().add(txtField);
this.getContentPane().add(contBtn);
setVisible(true);
}
/**
- methode afficherText de notre interface
public void afficherText(String text){
txtField.setText(text);
}
/**
public static void main (String Arg[]){
Defilement def = new Defilement();
}
}
Conclusion :
C'est juste pour aider le mec ni + ni -.
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.