Ada kalanya dalam membuat sebuah aplikasi, terdapat beberapa proses yang membutuhkan waktu yang lama dalam menjalankan proses yang akan dikerjakan, pada umumnya proses akan berjalan dibelakang dari aplikasi (background process).
Untuk itu ada baiknya memberikan sebuah tampilan Dialog yang menunjukkan adanya background process yang sedang berjalan. Ditambah lagi misalnya kita tidak mau user melakukan apapun sebelum background process tersebut selesai dijalankan, memunculkan Dialog menjadi pilihan yang dapat dilakukan.
ProgressBusyDialog merupakan user interface berupa Dialog yang menampilkan keterangan sedang berjalannya sebuah background process.
Pada component, saya menggunakan salah satu component dari SwingX untuk menampilkan progressbusy yang lebih menarik. (NB: dapat juga tidak menggunakan library SwingX ini, silahkan berkreasi sesuai ide kamu:) ). Dan ini adalah penerapan dari SwingWorker yang merupakan Swing Class yang berguna ketika ingin mengjalankan background process.
Library SwingX dapat di download : http://swinglabs.org/
Penerapan dari component ProgressBusyDialog ini seperti berikut:
public class MainFrame extends JFrame {
private ProgressWait progressWait;
private ProgressBusyDialog progressBusy;
public MainFrame() {
//Persiapan ProgressBusyDialog
progressBusy = new ProgressBusyDialog(null, true);
progressWait = new ProgressWait() {
public void showBusy(ProcessWorker worker) {
progressBusy.setWorker(worker);
progressBusy.open();
}
public void hideBusy() {
progressBusy.setVisible(false);
}
};
initComponents();
}
....
private void buttonStartActionPerformed(java.awt.event.ActionEvent evt) {
textAreaProgress.setText("");
WeightProcessDone donePro = new WeightProcessDone() {
public void done() {
//Proses yang akan dijalankan setelah BackgroundProcess selesai
textAreaProgress.append("Proses done");
JOptionPane.showMessageDialog(null, "BackgroundProcess telah selesai",
"Message Info", JOptionPane.INFORMATION_MESSAGE);
}
};
WeightProcess weightProcess = new WeightProcess() {
public void runProcess() {
//Sebuah proses yang ingin dijalankan dibackground proses
int count = 5;
textAreaProgress.append("Running BackgroundProcess \n");
for(int i=0; i<count; i++){
try {
Thread.sleep(3000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
textAreaProgress.append("Done " + (i+1) +" dari " + count + "\n");
}
}
};
ProcessWorker worker = new ProcessWorker(progressWait, donePro, weightProcess);
progressWait.showBusy(worker);
}
}
Berikut adalah tampilan dari contoh penerapan dari component ProgressBusyDialog pada sebuh JFrame :
Source code dari tutorial ini dapat di download di :
http://www.4shared.com/file/225966356/f178b4d1/ProgressUI.html
Popularity: 49% [?]
Tags: Java Swing, progress, swing, swingworker

wah..mantab, kalo progress bar bisa gak?
Mantap lae…