Cyb3rt On 4/01/2012

 Oke sekarang saya akan coba ngutak-atik progress bar di java, berikut samplenya




download sample ini, ekstrak, open project di Netbeans, arahkan k folder hasil ekstrak.
berikut penjelasan source codenya:
method start();
private void start() {
        try {
        time = Integer.parseInt(timeInput.getText());
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, "Value Kosong/Salah");
        }

        if (rdoEll.isSelected()) {
            elapsed();
        }
        else if (rdoRem.isSelected()) {
            remaining();
        }
        else {
            JOptionPane.showMessageDialog(this, "Pilih Tipe Progress!!");
        }
    }

di method ini program akan mengkonversi value yang diinput user ke integer yang mana value ini adalah total waktu.
lalu method ini akan mengecek tipe progress yang diinginkan, apakah maju(ellapsed) atau mundur(remaining)
setelah dicek, maka akan menjalankan method yang dipilih

method elapsed();
private void elapsed() {
        timer = new Timer();
        total = time;
        ellapsed = 0;
        timer.scheduleAtFixedRate(new TimerTask(){
            public void run(){
                if (time > 0) {
                    time--;
                    ellapsed++;
                    pb.setMinimum(0);
                    pb.setMaximum(total);
                    pb.setStringPainted(true);
                    pb.setValue(ellapsed);
                    pb.setString(ellapsed + " / " + total);
                    status = 1;
                    btnReset.setEnabled(true);
                }
                else {
                    timer.cancel();
                    pb.setValue(0);
                    pb.setString("");
                    status = 0;
                    btnReset.setEnabled(false);
                }
            }
        }, delay, period);
    }
pada method ini java util timer dimanfaatkan untuk melakukan task, jadi akan menset value max progress bar menjadi value yang diinginkan user, dan lalu menset waktu berjalan maju dari 0 sampai waktu yang diinput user (ellapsed++) sebagai value dari progress bar, lalu menset value status menjadi 1, dan saat timer sudah pada 0 (time--) maka task timer akan dihentikan dan mereset value progress bar ke awal(0) dan menset stringnya(keterangannya jadi kosong) dan terakhir menset value status menjadi 0.

sementara pada remaining, program tidak membutuhkan variabel yang bergerak maju (ellapsed++) cukup mengambilnya dari time-- dan menset value progress barnya dari variable time-- yang mana bergerak mundur

sementara pada event saat tombol start klik yang mana codenya seperti ini :
 if (status == 1) {
            timer.cancel();
            start();
        }
        else {
            start();
        }

itu error handling jika terdapat kondisi pada saat progressbar masih berjalan tapi user malah mengklik tombol start lagi maka task akan diulang dari awal, karena itulah pada method ellapsed() dan remaining() program perlu menset value menjadi 1 atau 0 untuk memberitahu event klik tombol start

dari contoh ini, bisa dikembangkan lagi menjadi seperti progress media player/winamp dengan format waktu




atau seperti progressbar browser download dan upload


berikut link download 2 sample di atas:
Sample 2
Sample 3

Semoga Bermanfaat..  :D

Terima kasih atas kunjungan anda, semoga postingan saya bermanfaat. Tolong berikan pendapat anda tentang postingan saya.

Leave a Reply

Subscribe to Posts | Subscribe to Comments