Animazione in Swing

2

Ho un progetto scritto usando Swing, e voglio renderlo più fluido (come JavaFX) aggiungendo l'animazione ad alcuni componenti ( JButton , JScrollPane , JSplitPane ) usando javax.swing.Timer .

UPD: non è un gioco. Voglio usare il Timer per brevi animazioni come gli eventi mouseHover o il menu a discesa, o scorrere. Ma il problema è che dovrebbero essere creati molti oggetti Timer.

Domanda: quale azione svolge per JVM? Avvio e interruzione di molti timer durante la sessione dell'app.

    
posta SeniorJD 07.10.2013 - 17:07
fonte

3 risposte

1

Sì, se vuoi fare tu stesso l'animazione, javax.swing.Timer è la tua migliore opzione. È leggero e garantisce che il codice venga eseguito sul thread EDT. Se ti avventuri nelle profondità dei componenti swing come JScrollPane potresti incontrare javax.swing.Timer usato per cose come lo scorrimento automatico durante il trascinamento e il rilascio ecc. In breve l'animazione in swing è abbastanza possibile ma rara nei componenti standard. Tieni semplicemente la tua area di ridimensionamento al minimo e repaint saggiamente. Vorrei sostenere la ricerca in quadro temporale .

    
risposta data 10.10.2013 - 15:06
fonte
1

link Mostra il tempo di spegnimento del timer oscillante di 10 ms a 200 ms utilizzarlo per attivare i fotogrammi dell'animazione non funzionerà correttamente. Usarlo per attivare l'inizio di un'animazione dovrebbe essere OK. Il modo in cui i timer dello swing funzionano è che un thread gestisce i timeout e l'effettivo callback dell'evento si verifica sull'EDT, quindi non dovrebbe importare se si dispone di un gran numero di timer che non usano molte risorse, ma assicurarsi che l'EDT possa mantenere up.

    
risposta data 10.10.2013 - 17:25
fonte
0
  1. Nessun. Esegui la tua app con qualcosa di simile a un ciclo di gioco e aggiorna i componenti periodicamente in questo modo. Con un timer, otterrai un'animazione inaffidabile e incerta. Questo argomento è troppo grande per essere trattato in dettaglio qui, ma questa è l'idea di base.
  2. L'implementazione dell'animazione con Swing va bene, ma non usare un timer.

HTH

    
risposta data 07.10.2013 - 18:10
fonte

Leggi altre domande sui tag