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();
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
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 :
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
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!!");
}
}
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();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.
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);
}
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
berikut link download 2 sample di atas:
Sample 2
Sample 3
0 komentar: