Miten saada aikaiseksi ProgressBar, joka täyttyy kun tietty metodi on suoritettu loppuun?
Kokeilin siten, että lisäsin ProgressBarin valueta metodissa aina joka lauseen jälkeen tietyn määrän, mutta kävi niin, että bar täyttyi vasta kun metodin lopputulos tuli näkyviin, ei siis sen suorituksen aikana.
Kokeilin siten, että lisäsin ProgressBarin valueta metodissa aina joka lauseen jälkeen tietyn määrän, mutta kävi niin, että bar täyttyi vasta kun metodin lopputulos tuli näkyviin, ei siis sen suorituksen aikana.
Vastaukset 4
Vanhimmat
Valistunut arvaus, että sille progressbarille periytyy joku refresh metodi jostain.
En tiedä oletko tutustunut Sunin sivuilta löytyvään esimerkkiin, joten aloitetaan siitä:)
http://java.sun.com/docs/books/tutorial/uiswing/components/progress.html
Mutta en tajua tota taskia, miten se asetetaan?
Tutustu hiukan SwingWorker luokkaan http://java.sun.com/javase/6/docs/api/javax/swing/SwingWorker.html lue toi sen johdanto osa ja sen jälkeen voit tutustua hieman lisää lukemalla vaikka tämän http://java.sun.com/developer/technicalArticles/javase/swingworker/
Eli doInBackground() metodissa teet työn / laskelmat, joka palauttaa tuloksen publish(V... chunks) metodin kautta. Jonka jälkeen SwingWorker kutsuu process() metodia joka prosessoi tulokset (esim. lisää tulokset taulukkoon / malliin) ja lisää samalla progressbarin arvoa chunks muuttuja koon mukaan esim. kutsumalla
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
progressbar.setValue(value);
}
});