Sms Gateway Memakai Java Dan Gammu Part 4 - Swingworker
Salah satu yang paling menjengkelkan ketika menciptakan jadwal yang berafiliasi dengan Hardware yaitu proses komunikasi dengan hardware. Kenapa? sebab biasanya proses komunikasi ini memerlukan waktu, dan biasanya lagi proses ini menciptakan program/aplikasi Stack (Hung) untuk beberapa saat.
Untuk mengatasi masal tersebut, terutama ketika bekerja dengan Komponen Swing yaitu memakai class SwingWorker. definisi Swing Worker Menurut Sun adalah:
"SwingWorker is designed for situations where you need to have a long running task run in a background thread and provide updates to the UI either when done, or while processing. Subclasses of SwingWorker must implement the doInBackground() method to perform the background computation",Kurang lebih terjemahannya kaya gini:" SwingWorker dirancang untuk situasi di mana Anda perlu mempunyai kiprah lain yang berjalan jangka panjang pada thread latar belakang sekaligus meng-update UI. Subclass dari SwingWorker harus menerapkan method doInBackground () untuk melaksanakan perhitungan latar belakang." (kalo ada yang andal bahasa inggris benerin yah).
Oke gak perlu panjang lebar lagi, kita mulai menciptakan pola implementasi SwingWorker untuk mengirim SMS Menggunakan Gammu.
Yang Perlu Disediakan :D
1. Java JDK dan Netbeans 7 (Atau terserah mau pake yang berapa pun)
2. Gammu for Linux (saya pake yang buat Ubuntu 11.04)
Langkah ke 1
Buat Project pada Netbeans kasih nama sesuai dengan keinginan.
(Silahkan baca https://sarjanabelajarjava.blogspot.com//search?q=buat-project-baru-di-netbeans untuk mengetahui menciptakan project di Netbeans)
Langkah Ke 2
Rancang frame dan tambahkan beberapa komponen Swing, rancang kurang lebih menyerupai gambar di bawah ini:
Langkah ke 3
buat method busy(boolean b):
private void busy(boolean b){ txnohp.setEnabled(!b); txcontent.setEnabled(!b); progress.setVisible(b); }
Langkah Ke 4
Tambahkan Kode ini pada potongan konstruktor Frame. Tambahkan setelah initComponents();
busy(false);
Langkah Ke 5
buat method kirim sms:
private void kirimSMS(final String noHP, jawaban String sms){ gammuWorker = new SwingWorker() { @Override protected String doInBackground() throws Exception { busy(true); Runtime runtime = Runtime.getRuntime(); if(sms.length() <= 153){ //Untuk Windows //runtime.exec( pathGammu + " -c " + pathGammurc + " TEXT " + noHP + " -text \""+ sms + "\""); //Untuk linux runtime.exec("gammu --sendsms TEXT " + noHP + " -text \""+ sms + "\""); return "Pesan Terkirim"; } else { return "Pesan Lebih dari 153 Karakter"; } } @Override protected void done() { try { //Cek apakah proses pengiriman pesan selesai? String pesan = get(); JOptionPane.showMessageDialog(null, pesan); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "Pesan tidak dikirimkan. Alasan:\n" + ex.getMessage()); } finally { busy(false); } } }; gammuWorker.execute(); }
Langkah ke 6
Supaya menarik pake Nimbus Look And Feel
public static void main(String args[]) { try { //UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); } catch (ClassNotFoundException ex) { Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex); } catch (InstantiationException ex) { Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(GammuSwingFrame.class.getName()).log(Level.SEVERE, null, ex); } java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new GammuSwingFrame().setVisible(true); } }); }
Kalo dah dijalankan coba test....
ini Screenshootnya:
Sourcecodenya:
http://www.4shared.com/file/9wfXSTBq/GammuSwingWorker.html
Kalau ada Pertanyaan silahkan Komentar
Belum ada Komentar untuk "Sms Gateway Memakai Java Dan Gammu Part 4 - Swingworker"
Posting Komentar