Qual è il modo corretto di aggiornare l'interfaccia utente dopo aver eseguito alcune operazioni su Swing?Swing, come aggiornare correttamente l'interfaccia utente
Ad esempio, dopo aver fatto clic su un pulsante, viene chiamato un metodo che può essere quasi istantaneo o richiedere alcuni secondi. Di fatto, tutta la logica dell'application viene eseguita a distanza tramite un servizio Web, quindi è normale attendere un po 'affinché l'applicazione risponda.
mio EventHandler per un pulsante può apparire come questi:
myButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
//callWebService();
//do stuff
//updateUI(); // <----- repaint? revalidate? what?
}
});
Il mio attuale implementazione chiama il metodo updateUI che chiamano internamente validate() e riverniciare() per la componente principale che contiene l'interfaccia utente. Funziona, ma a volte riesco a vedere lo sfarfallio dello schermo. Sto sbagliando? C'è un modo migliore per farlo?
http://en.wikipedia.org/wiki/SwingWorker – qwerty
A quanto ho capito, questa domanda riguarda l'aggiornamento dell'interfaccia utente dopo aver fatto qualcosa, non di fare cose in un altro thread per mantenere l'interfaccia utente reattiva. Non capisco proprio perché il tempo di esecuzione del metodo è stato menzionato nella domanda, però. –
Ho menzionato il tempo di esecuzione perché sembra che Swing si comporti in modo un po 'diverso quando si tenta di caricare i componenti e il carico impiega troppo tempo, quindi potrebbe essere necessario ridisegnare lo schermo. – Hectoret