--- In jug-indonesia@yahoogroups.com, "Surya" <[EMAIL PROTECTED]> wrote: > > ud ak tambahin ni runnable di tempat yang disarankan. > tambahin runnable ny benerkan seperti itu?? hehehe... > sekarang ud bisa muncul progress barnya cuma increment barnya nggak > keliatan jadi tiba2 langsung penuh... > > wah sedikit seneng ni...^_^ > > yg sabar ya soalny masih pemula d java. hihi... > > ======================================================= > Class : SendFile > ======================================================= > file = fc.getSelectedFile(); > filesize = file.length(); > > progressBar = new ProgressBar((int) filesize); > Thread t = new Thread(progressBar); > t.start(); > adrProto = "btgoep://" + adr + ":" + port + > ";authenticate=false;encrypt=false;master=false"; > > try { > > SwingUtilities.invokeLater(new Runnable() { > > public void run() { > try { > > ClientSession cs = (ClientSession) OBEXConnector.open(adrProto); > HeaderSet hs = cs.connect(cs.createHeaderSet()); > > if (hs.getResponseCode() != ResponseCodes.OBEX_HTTP_OK) > { > JOptionPane.showMessageDialog(null, "Koneksi Gagal", "Informasi", > JOptionPane.ERROR_MESSAGE); > cs.close(); > } > > byte objek[] = getBytesFromFile(file); > hs.setHeader(HeaderSet.NAME, file.getName()); > hs.setHeader(HeaderSet.TYPE, "text"); > > Operation po = cs.put(hs); > outputStream = po.openOutputStream(); > ByteArrayInputStream bais = new ByteArrayInputStream(objek); > byte[] buffer = new byte[0xFF]; > int i = bais.read(buffer); > done = 0; > while (i != -1) { > outputStream.write(buffer, 0, i); > done += i; > progressBar.setValue(done); > i = bais.read(buffer); > } > outputStream.flush(); > outputStream.close(); > po.close(); > > HeaderSet hsDisconnect = cs.disconnect(null); > if (hsDisconnect.getResponseCode() == ResponseCodes.OBEX_HTTP_OK) > { > JOptionPane.showMessageDialog(null, "File Berhasil > dikirim","Informasi", JOptionPane.ERROR_MESSAGE); > } else { > JOptionPane.showMessageDialog(null, "File gagal > dikirim","Informasi", JOptionPane.ERROR_MESSAGE); > } > } catch (Throwable e) { > e.getMessage(); > } > } > }); > java.lang.Thread.sleep(500); > } catch (InterruptedException e) { > } > ======================================================= > > ======================================================= > Class : ProgressBar > ======================================================= > public class ProgressBar implements Runnable{ > > static JFrame frmMain; > static Container pane; > public static JProgressBar barDo; > private boolean done = false; > private int VALUE; > private int MAX; > > public ProgressBar(int mx) { > try { > > UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); > } catch (Exception e) { > } > > this.MAX = mx; > frmMain = new JFrame("Sample progress bar application"); > frmMain.setSize(300, 100); > pane = frmMain.getContentPane(); > pane.setLayout(null); > frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); > barDo = new JProgressBar(0, MAX); > > pane.add(barDo); > barDo.setBounds(10, 10, 280, 20); > > frmMain.setResizable(false); //No resize > frmMain.setVisible(true); > > } > > public void run() { > while (!done) { > if (barDo.getValue() != MAX) { > > > barDo.setValue(getValue()); //Set value > barDo.repaint(); //Refresh graphics > try { > Thread.sleep(500); > } > catch (InterruptedException err) { > } > }else{ > done = true; > System.out.println("selesai"); > } > } > > public void setValue(int vl) { > this.VALUE = vl; > System.out.println(vl+" set vlue"); > } > > public int getValue() { > return VALUE; > } > > public void setMax(int mx) { > this.MAX = mx; > } > > public int getMax() { > return MAX; > } > > public void setMaximum(int maxi) { > barDo.setMaximum(maxi); > } > > public int getMaximum() { > return barDo.getMaximum(); > } > > public int getValueProgress() { > return barDo.getValue(); > } > } > ======================================================= >
Selamat2!! Bener tuh caranya :) Anyway kalau progress bar kenapa tiba2 penuh itu mungkin karena proses baca file-nya terlalu cepet buat nunjukin progress barnya jalan... kalau elo mau bener2 ngetest progress bar elo harus kasih proses yg bener2 berat banget... kaya loading file segede 1 megs Good luck!! Donny