Friday, February 15, 2013

Java : Swing Worker Example

Dari post sebelumnya, saya telah membahas secara singkat mengenai swing worker. Unutk post kali ini saya akan memberikan contoh sederhana implementasi dari swing worker.

Pertama kita buat GUI seperti dibawah ini. Nama frame nya yaitu SwingWorkerFrameExample  berikan nama variable untuk text area dengan nama textArea dan variable untuk button start yaitu start serta untuk button stop yaitu stop.





















Untuk memudahkan kita dalam melakukan pemanggilan objek dari frame diatas, kita tambahkan method seperti dibawah ini, caranya kita masuk ke source dari frame dan tuliskan code dibawah ini.


 private static SwingWorkerFrameExample swingWorkerFrameExample;
    
    public static SwingWorkerFrameExample getInstance(){
        if(swingWorkerFrameExample==null){
            swingWorkerFrameExample= new SwingWorkerFrameExample();
        }
        return swingWorkerFrameExample;
    }

    public JTextArea getTextArea() {
        return textArea;
 }
 

Selanjutna kita buat kelas, contoh kelasnya yaitu SwingWorkerExample yang mengextends ke kelas SwingWorker. codenya seperti dibawah ini.



import javax.swing.SwingWorker;

/**
 *
 * @author adi nuralim adinuralim@gmail.com
 * @since 20-Jan-2013
 */
public class SwingWorkerExample extends SwingWorker<Void, Void> {

    public static SwingWorkerExample swingWorkerExample;
    
    public static SwingWorkerExample getInstance(){
        if(swingWorkerExample==null){
            swingWorkerExample= new SwingWorkerExample();
        }
        return swingWorkerExample;
    }
    @Override
    protected Void doInBackground() throws Exception {
        //masukan statement.....
        
        while(true){
            //menampilkan string ke texarea dari frame
            SwingWorkerFrameExample.getInstance().getTextArea().append("adicodes.blogspot.com\n");
Thread.sleep(1000);
        }
    }

}



Jika kita telah membuat kelas tersebut, kelas itu akan melakukan overaide method doInBackground dari kelas SwingWorker. dimethod tersebut kita masukan statement yang akan dieksekusi dengan background thread. Untuk kasus sekarang, statement yang saya buat yaitu menampilkan "http://adicodes.blogspot.com/". artinya ketikan program dijalankan, maka akan tampil kelayar "http://adicodes.blogspot.com/"  terus menerus.

Kemudian kita berikan sebuah aksi untuk button start. button start ini berfungsi untuk menjalankan background  thread yang telah kita buat.

code programnya seperti dibawah ini.


private void startActionPerformed(java.awt.event.ActionEvent evt) {
//mengecek thread di cancel atau tidak
        if (SwingWorkerExample.getInstance().isCancelled()) {
       
            //isCanceled
            SwingWorkerExample swe = new SwingWorkerExample();
            SwingWorkerExample.swingWorkerExample=swe;
            swe.execute();
        } else {
            //false
            SwingWorkerExample.getInstance().execute();
        }
}


Setelah kita memberikan aksi untuk button start, sekarang kita berikan aksi juga untuk button stop. fungsinya untuk menghentikan background thread.


private void stopActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
   
            SwingWorkerExample.getInstance().cancel(true);
        
    }

Oke, sekarang kita coba running, maka hasilnya akan seperti berikut ini :




















  • struktur filenya :










Selamat mencoba, semoga bermanfaat.

No comments:

Post a Comment

Aplikasi Web Crawler Untuk Pengarsipan Konten Web

Berikut ini printscreen tampilan dari aplikasi web crawler : Gambar 1 Splashscreen Gambar 2  Halaman Utama Gambar 3  Pengat...