tendone nella barra del titolo in JFrame
Domanda
Come posso fare la barra del titolo di un JFrame da Marquee come il tendone in HTML se si utilizza il tag tendone?
Soluzione
Dio mi perdoni per il seguente codice
Inserire il codice nel costruttore telaio se si desidera che il tendone per avviare direttamente dopo il caricamento:
int delay = 3000;
int period = 50;
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
int spaces=0;
public void run() {
String title="";
for (int j = 0; j < spaces; j++) {
title+= " " ;
}
title+= "Annoying";
Main.this.setTitle(title);
spaces=(spaces+1)%50;
}
}, delay, period);
Aggiorna
Come per i commenti, qui è un'altra versione utilizzando swing.Timer
Timer timer = new Timer(delay,new ActionListener(){
int spaces=0;
public void actionPerformed(ActionEvent e) {
String title="";
for (int j = 0; j < spaces; j++) {
title+= " " ;
}
title+= "Annoying";
Main.this.setTitle(title);
spaces=(spaces+1)%50;
}}
);
timer.start();
Questo codice è per l'apprendimento solo scopo, si prega di non utilizzare in un prodotto vero e proprio.
Altri suggerimenti
Si prega di non fare.
Se si decide di, allora la tecnica ovvia è quella di setTitle con una sottosequenza del testo desiderato. Credo che diversi spazi di dimensioni parziali in Unicode possono permettere di sfruttare al leggermente più dolce (o potrebbero apparire come quadrati).
In alternativa, si potrebbe fare la finestra PL & F decorati (non funzionerà con il nativo PL & F nella implementazione di Sun / Oracle) e disegnare il testo da soli. A guardare bene, avresti bisogno di sintonizzare al particolare PL & F e la configurazione.
int delay = 0;
int period = 500;
t.scheduleAtFixedRate(new TimerTask(){
String test = " Test marquee";
int i = 0;
public void run(){
titleChanger(test.substring(i, test.length()));
i++;
if(test.length()==i){
i = 0;
}
}
}, delay, period);
Timer t = new Timer();
public void titleChanger(String t){
this.setTitle(t);
}
Prova questo, infallibile. E più facile da capire.