Domanda

Come posso fare la barra del titolo di un JFrame da Marquee come il tendone in HTML se si utilizza il tag tendone?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top