by Abu Zubayr

Membatasi Jenis Inputan pada JTextField

membatasi jenis inputan pada jtextfield

Bismillah ...

Pada suatu keadaan kita akan menjumpai dimana pada sebuah inputan komponen JTextField diminta hanya bisa menerima inputan angka saja atau huruf saja. Sebagai contoh untuk inputan nim mahasiswa, nomor ktp dan lain-lain yang inputannya hanya berupa angka. Nah, pada psotingan ini saya akan memberikan contoh untuk membatasi inputan-inputan tersebut.

Method yang akan kita gunakan untuk membatasi inputan pada komponen JTextField adalah method setDocumentFilter() dan selanjutnya menggunakan kelas DocumentFilter serta meng-override method replace() dari kelas tersebut.

Berikut adalah contoh pembuatan methodnya:
private void triggerText(JTextField tx, int max){
        ((AbstractDocument) tx.getDocument()).setDocumentFilter(new DocumentFilter() {
            Pattern pattern = Pattern.compile("\\d");
            /* Pattern digunakan untuk memfilter jenis inputan apa yang boleh masuk
            Untuk melihat jenis regular-expression buka di https://docs.oracle.com/javase/7/docs/api/util/regex/Pattern.html
            */
            @Override
            public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
                Matcher matcher = pattern.matcher(text);// kelas Matcher digunakan untuk mencocokkan inputan pengguna dengan jenis regular-expression
                if (!matcher.matches())//jika inputan tidak cocok dengan pattern maka return;
                    return;
                
                if(tx.getText().length()>max)//jika jumlah length text melebihi ketentuan maka return;
                    return;
                super.replace(fb, offset, length, text, attrs);
            }
        });
 }    

Contoh penggunaan method diatas adalah sebagai berikut :
package az.dialog.gui;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.text.AbstractDocument;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.DocumentFilter;

public class DemoText extends JFrame{ 
    public DemoText(){
        super("Demo Trigger Text");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,100);
        
        JTextField text = new JTextField();
        triggerText(text, 25);
        getContentPane().add(text);
    }
    
    private void triggerText(JTextField tx, int max){
        ((AbstractDocument) tx.getDocument()).setDocumentFilter(new DocumentFilter() {
            Pattern pattern = Pattern.compile("\\d");
            /* Pattern digunakan untuk memfilter jenis inputan apa yang boleh masuk
            Untuk melihat jenis regular-expression buka di https://docs.oracle.com/javase/7/docs/api/util/regex/Pattern.html
            */
            @Override
            public void replace(DocumentFilter.FilterBypass fb, int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
                Matcher matcher = pattern.matcher(text);// kelas Matcher digunakan untuk mencocokkan inputan pengguna dengan jenis regular-expression
                if (!matcher.matches())//jika inputan tidak cocok dengan pattern maka return;
                    return;
                
                if(tx.getText().length()>max)//jika jumlah length text melebihi ketentuan maka return;
                    return;
                super.replace(fb, offset, length, text, attrs);
            }
        });
    }    
    
    public static void main(String[]args){
        new DemoText().setVisible(true);
    }
}

Demikianlah tutorial Membatasi Jenis Inputan pada JTextField. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari blog ini, silahkan isi email anda pada isian Follow by Email dibawah.

Terima kasih... wassalam
Share:

5 Alasan Mengapa Desa Wajib Memiliki Website


5 Alasan Mengapa Desa Wajib Memiliki Website

Beberapa waktu lalu, tanggal 6 Desember 2016 pembuatan website Desa Merawang selesai dibuat, dan kemudian bersama perangkat desa secara resmi meluncurkan website tersebut. Desa Merawang merupakan salah satu desa yang berada di Kecamatan Lingga, Kabupaten Lingga, Provinsi Kepulauan Riau. Sebenarnya website ini sudah lama siap dibuat, hanya saja pada saat pendaftaran domainnya terjadi sedikit kendala. Kendalanya adalah pada saat membuat akun pnsmail yang dijadikan sebagai syarat pengajuan pembuatan domain .desa.id dari kominfo pusat. Dan alhamdulillah, pada akhir November lalu akun pnsmail tersebut pun telah selesai didaftarkan dan dikirimkan langsung username dan password untuk login oleh helpdesk domain kominfo. Setelah itu barulah dilanjutkan untuk mengunggah berkas-berkas yang diminta oleh kominfo sebagai syarat pengajuan domain .desa.id. Domain .desa.id ini dibuat secara khusus oleh Penyedia Nama Domain Indonesia (PANDI) untuk desa. Untuk pendaftaran domain tersebut gratis 1 tahun dan akan dikenakan biaya untuk 2 tahun sekaligus sebesar Rp.55.000.

Setelah seluruh dokumen persyaratan diunggah, barulah beberapa hari kemudian mendapatkan informasi dari kominfo melalui akun pnsmail bahwa domain merawang-lingga.desa.id tersebut telah aktif. Langkah selanjutnya adalah mencari hosting untuk menempatkan seluruh file-file website yang ada. Kemudian barulah pada tanggal 6 Desember 2016 website tersebut aktif dan bisa digunakan oleh perangkat Desa Merawang.

Kemudian selama 3 hari berikutnya saya diminta untuk melatih beberapa perangkat desa merawang supaya bisa mandiri mengelola websitenya. Pada sesi pertama saya terlebih dahulu memaparkan 5 buah alasan mengapa desa wajib memiliki sebuah website. Berikut adalah alasannya :
  1. Amanat Undang-Undang Nomor 6 Tahun 2014 Bagian Ketiga.
    Pada UU No.6 Tahun 2014 Bagian Ketiga tentang Sistem Informasi Pembangunan Desa dan Pembangunan Kawasan Perdesaan Pasal 86 berbunyi :
    (1) Desa berhak mendapatkan akses informasi melalui Sistem Informasi Desa yang dikembangkan oleh Pemerintah Daerah Kabupaten/Kota.
    (2) Pemerintah dan Pemerintah Daerah wajib mengembangkan Sistem Informasi Desa dan pembangunan Kawasan Perdesaan.
    (3) Sistem Informasi Desa sebagaimana dimaksud pada ayat (2) meliputi fasilitas perangkat keras dan perangkat lunak, jaringan, serta sumber daya manusia.
    (4) Sistem Informasi Desa sebagaimana dimaksud pada ayat (2) meliputi data Desa, data Pembangunan Desa, Kawasan Perdesaan, serta informasi lain yang berkaitan dengan Pembangunan Desa dan pembangunan Kawasan Perdesaan.
    (5) Sistem Informasi Desa sebagaimana dimaksud pada ayat (2) dikelola oleh Pemerintah Desa dan dapat diakses oleh masyarakat Desa dan semua pemangku kepentingan.
    (6) Pemerintah Daerah Kabupaten/Kota menyediakan informasi perencanaan pembangunan Kabupaten/Kota untuk Desa.


    Pada undang-undang diatas sangat jelas bahwa setiap desa wajib memiliki Sistem Informasi Desa. Sistem informasi tersebut mencakup perangkat keras (hardware), perangkat lunak (software), jaringan dan sumber daya manusia. Dan website adalah salah satu Sistem Informasi Desa berupa perangkat lunak (software).
  2. Memperkenalkan Struktur Pemerintahan.
    Dengan adanya website, desa bisa memperkenalkan struktur pemerintahan desa, struktur pemerintahan bpd dan struktur-struktur organisasi lainnya yang ada pada desa tersebut kepada publik secara luas. Sehingga jika ada masyarakat atau instansi tertentu yang berkepentingan untuk mengetahui susunan pemerintahan yang ada didesa tersebut, maka ia hanya perlu membuka alamat website desa dan sudah mendapatkannya dengan segera.
    Dengan adanya website, desa bisa memperkenalkan struktur pemerintahan desa, struktur pemerintahan bpd dan struktur-struktur organisasi lainnya yang ada pada desa tersebut kepada publik secara luas. Sehingga jika ada masyarakat atau instansi tertentu yang berkepentingan untuk mengetahui susunan pemerintahan yang ada didesa tersebut, maka ia hanya perlu membuka alamat website desa dan sudah mendapatkannya dengan segera.
  3. Memudahkan Akses Informasi bagi Masyarakat Luas.
    Sudah pasti jika sebuah desa memiliki website, maka akan memudahkan akses informasi bagi masyarakat luar yang ingin mengetahui perkembangan desa. Seluruh informasi baik berita desa atau informasinya sudah tersaji pada sebuah halaman website yang bisa diakses dan kapan dan dimana saja.
  4. Transparansi Anggaran.
    Seluruh kegiatan pembangunan yang disusun pada APBDes bisa diposting melalui halaman website desa. Masyarakat juga bisa melihat progress dari masing-masing kegiatan yang dilaksanakan oleh pelaksana kegiatan, sehingga anggaran desa menjadi lebih transparan. Transparansi pada tata kelola pemerintahan desa ini juga terdapat pada UU No.6 Tahun 2014 Tentang Desa.
  5. Seluruh Potensi Desa bisa ter-exspose.
    Desa yang memiliki potensi alam, wisata maupun potensi-potensi desa lainnya bisa ter-exspose dengan baik. Sehingga tidak menutup kemungkinan bagi para pengusaha dan investor berdatangan dan berlomba-lomba untuk mengembangkan usahanya didesa tersebut. Atau jika memiliki objek wisata barangkali, maka melalui website tersebut bisa akan mengundang wisatawan dalam negeri maupun luar negeri untuk datang dan menikmati wisata yang ada pada desa tersebut. Hal ini tentu akan meningkatkan pendapatan desa diluar dari pendapatan APBDes itu sendiri.

Kelima alasan diataslah yang membuat desa wajib memiliki website. Sudah seharusnya Kepala Desa serius untuk memperhatikan amanat UU No.6 Tahun 2014 bagian Ketiga yang telah saya sebutkan diatas tentang Sistem Informasi Desa. Selain dari tuntutan undang-undang tersebut, desa juga mendapatkan keuntungan seperti mudah untuk mempromosikan makanan khas daerah, objek wisata atau keunikan-keunikan lain yang terdapat pada desa tersebut kepada para pengunjung website. Sehingga mereka yang tertarik, akan berdatangan ke desa tersebut.

Untuk pembuatan website itu sendiri, pemerintah desa tidak perlu pusing karena banyak penyedia jasa pembuatan website (web developer) yang menawarkan jasanya dengan harga yang bervariasi pula. Kami juga menyediakan jasa pembuatan website desa dengan biaya yang relatif murah, yakni hanya sebesar Rp.1.700.000,- saja per website. Dengan biaya tersebut sudah mencakup pendaftaran domain .desa.id, website itu sendiri, paket hosting, dan ebook tutorial pengelolaan website bagi perangkat desa. Dengan biaya pembuatan diatas tentu sangat terjangkau dan tidak memberatkan pemerintah desa untuk memiliki website bagi desanya. Kemudian untuk pelatihan secara langsung bisa meminta kami untuk mengisi selama beberapa hari sesuai dengan keinginan desa dengan syarat desa tersebut masih berada diwilayah Kabupaten Lingga. Untuk desa yang berada diluar Kabupaten Lingga kami hanya mengirimkan ebook tutorialnya saja.

Untuk informasi lebih lanjut mengenai pembuatan website desa bisa menghubungi kami di :
No.Telp/WA  : 0821-6981-1564 (Sardi, S.T)
Email             : celikmarberd@gmail.com
Share:

Membuat Confirm Dialog dengan JOptionPane showConfirmDialog

Bismillah…

Kita sering melihat pada sebuah aplikasi komputer ataupun website sering menampilkan sebuah pesan konfirmasi sebelum melanjutkan ke proses berikutnya. Misalnya pada saat pengguna ingin menghapus data tertentu, maka sistem akan memunculkan pesan konfirmasi apakah benar data tersebut akan dihapus atau tidak dengan menampilkan tombol OKE dan CANCEL atau tombol-tombol lainnya. Nah, untuk membuat pesan konfirmasi semacam ini pada bahasa pemrograman java kita menggunakan sebuah method static showConfirmDialog() yang terdapat pada kelas JOptionPane. Pada method tersebut terdapat beberapa parameter diantaranya adalah :
JoptionPane.showConfirmDialog(Component parentComponent, Object message);
JOptionPane.showInputDialog(Component parentComponent, Object message, String title, int optionType);
JOptionPane.showInputDialog(Component parentComponent, Object message, String title, int optionType, int messageType);
JOptionPane.showInputDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon);

Penjelasan Parameter :
  • parentComponent - determines the Frame in which the dialog is displayed; if null, or if the parentComponent has no Frame, a default Frame is used.
    Parameter ini digunakan untuk menentukan frame dimana kotak dialog konfirmasi tersebut ditampilkan. Jika diisi dengan nilai null, maka parameter tersebut menggunakan frame default.
  • message - the Object to display.
    Parameter ini digunakan untuk mengisi pesan kotak konfirmasi dialog tersebut.
  • title - the title string for the dialog.
    Digunakan untuk mengisi judul kotak dialog konfirmasi yang dibuat.
  • optionType - an int designating the options available on the dialog: YES_NO_OPTION, YES_NO_CANCEL_OPTION, or OK_CANCEL_OPTION. Parameter ini digunakan untuk merubah jenis tombol dialog berupa YES_NO_OPTION, YES_NO_CANCEL_OPTION, or OK_CANCEL_OPTION. messageType - an integer designating the kind of message this is; primarily used to determine the icon from the pluggable Look and Feel: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE.
    Dengan parameter ini kita dapat menentukan jenis icon kotak dialog yang ditampilkan, apakah berupa ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE.
  • icon - the icon to display in the dialog.
    Paramter icon ini akan me-replace paramter messageType diatas dengan mengganti jenis icon yang kita tentukan.

Nah, setelah mengetahui fungsi masing-masing parameter pada method showConfirmDialog() tersebut, selanjutnya kita akan mencoba menerapkan satu persatu dengan parameter yang berbeda.
  1. Menggunakan 2 Parameter
    package az.dialog.confirm;
    import javax.swing.JOptionPane;
    
    public class Confirm2 {
        public static void main(String[]args){
            int opsi = JOptionPane.showConfirmDialog(null, "Benarkah anda ingin menghapus data ini ?");
            switch(opsi){
                case JOptionPane.YES_OPTION:
                    JOptionPane.showMessageDialog(null, "Saat dipilih yes !");
                    break;
                case JOptionPane.NO_OPTION:
                    JOptionPane.showMessageDialog(null, "Saat dipilih no !");
                    break;
                default:
                    JOptionPane.showMessageDialog(null, "Saat dipilih cancel !");
                    break;
            }
        }
    }
    
    Output dari kode program diatas seperti gambar dibawah ini :
    confirm dialog 2 parameter

  2. Menggunakan 4 Parameter
    package az.dialog.confirm;
    import javax.swing.JOptionPane;
    
    public class Confirm4 {
        public static void main(String[]args){
            int opsi = JOptionPane.showConfirmDialog(null, "Benarkah anda ingin menghapus data ini ?", "Penghapusan Data", JOptionPane.YES_NO_OPTION);
            if (opsi == JOptionPane.YES_OPTION)
                JOptionPane.showMessageDialog(null, "Saat dipilih yes !");
            else
                JOptionPane.showMessageDialog(null, "Saat dipilih no !");
        }
    }
    
    Output dari kode program diatas adalah seperti gambar dibawah ini :
    confirm dialog 4 parameter


  3. Menggunakan 5 Parameter
    package az.dialog.confirm;
    import javax.swing.JOptionPane;
    
    public class Confirm5 {
        public static void main(String[]args){
            int opsi = JOptionPane.showConfirmDialog(null, "Benarkah anda ingin menghapus data ini ?", 
                    "Penghapusan Data", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
            
            if (opsi == JOptionPane.YES_OPTION)
                JOptionPane.showMessageDialog(null, "Saat dipilih yes !");
            else
                JOptionPane.showMessageDialog(null, "Saat dipilih no !");
        }
    }
    
    Output dari kode program diatas adalah seperti gambar dibawah ini :
    confirm dialog 5 parameter

  4. Menggunakan 6 parameter
    package az.dialog.confirm;
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    
    public class Confirm6 {
        public static void main(String[]args){
            ImageIcon icon = new ImageIcon("src/az/dialog/pesan/kas.png");
            int opsi = JOptionPane.showConfirmDialog(null, "Benarkah anda ingin mentransfer uang ke rekening xxx ?", 
                    "Pengiriman Uang", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, icon);
            
            if (opsi == JOptionPane.YES_OPTION)
                JOptionPane.showMessageDialog(null, "Saat dipilih yes !");
            else
                JOptionPane.showMessageDialog(null, "Saat dipilih no !");
        }
    }
    
    Hasil pada saat program diatas dijalankan adalah seperti berikut ini :
    confirm dialog 6 parameter


  5. Custom
    Terakhir kita akan membuat secara lengkap dengan menggunakan sebuah frame tertentu untuk menampilkan dialog konfirmasi diatas.
    package az.dialog.confirm;
    import java.awt.Color;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    
    public class Custom {
        public static void main(String[]args){
            JFrame frame = new JFrame("Frame Input Dialog");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(800, 600);
            frame.getContentPane().setBackground(Color.RED);
            frame.setVisible(true);
            ImageIcon icon = new ImageIcon("src/az/dialog/pesan/kas.png");
            int opsi = JOptionPane.showConfirmDialog(frame, "Benarkah anda ingin mentransfer uang ke rekening xxx ?", 
                    "Pengiriman Uang", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, icon);
            
            if (opsi == JOptionPane.YES_OPTION)
                JOptionPane.showMessageDialog(frame, "Saat dipilih yes !");
            else
                JOptionPane.showMessageDialog(frame, "Saat dipilih no !");
        }
    }
    
    Hasil dari kode program diatas pada saat dijalankan adalah seperti gambar dibawah ini :
    custom dialog konfirmasi

Demikianlah tutorial Membuat Confirm Dialog dengan JOptionPane showConfirmDialog. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari blog ini, silahkan isi email anda pada isian Follow by Email dibawah.

Terima kasih... wassalam
Share:

Membuat Input Dialog dengan JOptionPane showInputDialog

Bismillah…

Pada postingan sebelumnya saya sudah memberikan tutorial bagaimana membuat sebuah kotak dialog untuk menampilkan pesan pada sebuah aplikasi. Nah, pada postingan ini saya kembali akan memberikan tutorial bagaimana membuat sebuah input dialog dengan bahasa pemrograman java. Kelas yang digunakan masih sama dengan pembuatan dialog pesan sebelumnya yakni pada kelas JOptionPane. Adapun method yang digunakan untuk menampilkan input dialog ini adalah method showInputDialog(). Pada method ini terdapat beberapa parameter diantaranya adalah :
JOptionPane.showInputDialog(Object message);
JoptionPane.showInputDialog(Component parentComponent, Object message);
JOptionPane.showInputDialog(Object message,  Object initialSelectionValue);
JOptionPane.showInputDialog(Component parentComponent, Object message, Object initialSelectionValue);
JOptionPane.showInputDialog(Component parentComponent, Object message, String title, int messageType);
JOptionPane.showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue);
Penjelasan Parameter :
  • message - the Object to display.
    Parameter ini digunakan untuk mengisi pesan kotak dialog tersebut.
  • parentComponent - the parent Component for the dialog.
    Parameter ini digunakan untuk menentukan frame dimana kotak dialog tersebut ditampilkan. Jika diisi dengan nilai null, maka parameter tersebut menggunakan frame default.
  • initialSelectionValue - the value used to initialize the input field.
    Parameter ini digunakan untuk membuat inisialisasi inputan.
  • title - the String to display in the dialog title bar.
    Digunakan untuk mengisi judul dialog yang dibuat.
  • messageType - the type of message that is to be displayed: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE.
    Dengan parameter ini kita dapat menentukan jenis icon kotak dialog yang ditampilkan, apakah berupa ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE.
  • icon - an icon to display in the dialog that helps the user identify the kind of message that is being displayed.
    Paramter icon ini akan me-replace paramter messageType diatas dengan mengganti jenis icon yang kita tentukan.
  • selectionValues - an array of Objects that gives the possible selections.
    Membuat pilihan nilai input yang bisa dipilih oleh pengguna.

Setelah mengetahui fungsi masing-masing parameter diatas, selanjutnya kita akan mencoba satu persatu jenis input dialog diatas dengan parameter yang berbeda-beda. Pertama kita akan menggunakan method yang menggunakan 1 buah parameter kemudian terakhir dengan menggunakan ke 7 parameter tersebut.
  1. Menggunakan 1 Parameter
    package az.dialog.input;
    import javax.swing.JOptionPane;
    
    public class Input1 {
        public static void main(String[]args){        
            String nama = JOptionPane.showInputDialog("Masukkan Nama Anda :");
            JOptionPane.showMessageDialog(null, "Hello "+nama, "Biodata", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Hasil dari kode diatas seperti gambar dibawah ini :
    input dialog dengan 1 parameter

  2. Menggunakan 2 Parameter
    Pada method showInputDialog() terdapat 2 buah jenis yang menggunakan 2 parameter. Yang pertama dengan parameter parentComponent dan message, dan yang kedua adalah dengan parameter message dan initialSelectionValue. Pada method yang menggunakan parameter parentComponent dan message tidak berbeda dengan hasil method yang menggunakan 1 buah parameter sebelumnya, hanya saja method yang menggunakan 1 buah parameter tidak bisa menentukan pada komponen mana input dialog tersebut dibuat. Kemudian method yang menggunakan parameter message dan initialSelectionValue bisa menginisialisasi input dialog. Baiklah, selanjutnya kita akan menerapkan satu persatu method tersebut dimulai dari yang menggunakan parameter parentComponent dan message.
    package az.dialog.input;
    import javax.swing.JOptionPane;
    
    public class Input12Component {
        public static void main(String[]args){        
            String nama = JOptionPane.showInputDialog(null, "Masukkan Nama Anda :");
            JOptionPane.showMessageDialog(null, "Hello "+nama, "Biodata", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Pada kode diatas tidak berbeda hasilnya dengan contoh sebelumnya yang menggunakan 1 buah parameter. Selanjutnya contoh kedua seperti berikut ini:
    package az.dialog.input;
    import javax.swing.JOptionPane;
    
    public class Input2Initial {
        public static void main(String[]args){        
            String nama = JOptionPane.showInputDialog("Masukkan Nama Anda :", "Nama Anda");
            JOptionPane.showMessageDialog(null, "Hello "+nama, "Biodata", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Hasil dari kode diatas adalah seperti gambar dibawah ini :
    input dialog dengan 2 parameter


  3. Menggunakan 3 Parameter
    package az.dialog.input;
    import javax.swing.JOptionPane;
    
    public class Input3 {
        public static void main(String[]args){        
            String nama = JOptionPane.showInputDialog(null, "Masukkan Nama Anda :", "Nama Anda");
            JOptionPane.showMessageDialog(null, "Hello "+nama, "Biodata", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Pada method showInputDialog() diatas yang menggunakan 3 buah parameter hasilnya tidak berbeda dengan yang sebelumnya. Hanya saja dengan 3 parameter tersebut anda bisa menentukan komponen mana input dialog tersebut dibuat.


  4. Menggunakan 4 Parameter
    package az.dialog.input;
    import javax.swing.JOptionPane;
    
    public class Input4 {
        public static void main(String[]args){        
            String nama = JOptionPane.showInputDialog(null, "Masukkan Nama Anda :", "Biodata", JOptionPane.INFORMATION_MESSAGE);
            JOptionPane.showMessageDialog(null, "Hello "+nama, "Biodata", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Hasil dari kode diatas adalah seperti berikut ini :
    input dialog dengan 4 parameter


  5. Menggunakan 7 Parameter
    package az.dialog.input;
    import javax.swing.ImageIcon;
    import javax.swing.JOptionPane;
    
    public class Input7 {
        public static void main(String[]args){
            ImageIcon icon = new ImageIcon("src/az/dialog/pesan/kas.png");
            Object jlh = JOptionPane.showInputDialog(null, "Berapa jumlah uang yang akan dikirimkan ? :", "Pengiriman", JOptionPane.PLAIN_MESSAGE, icon,
                    new String[]{"Rp.100.000", "Rp.200.000", "Rp.300.000","Rp.400.000","Rp.1.000.000"}, "Rp.100.000");
            JOptionPane.showMessageDialog(null, "Jumlah pengiriman "+jlh, "Informasi Pengiriman", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Hasil pada saat program diatas dijalankan adalah seperti berikut ini :
    input dialog dengan 7 parameter


  6. Custom 1
    Kita akan membuat secara lengkap dengan menggunakan sebuah frame tertentu untuk menampilkan input dialog diatas.
    package az.dialog.input;
    import java.awt.Color;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    
    public class Custom {
        public static void main(String[]args){
            JFrame frame = new JFrame("Frame Input Dialog");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(800, 600);
            frame.getContentPane().setBackground(Color.RED);
            frame.setVisible(true);
            ImageIcon icon = new ImageIcon("src/az/dialog/pesan/kas.png");
            Object jlh = JOptionPane.showInputDialog(frame, "Berapa jumlah uang yang akan dikirimkan ?", "Pengiriman", JOptionPane.PLAIN_MESSAGE, icon,
                    new String[]{"Rp.100.000", "Rp.200.000", "Rp.300.000","Rp.400.000","Rp.1.000.000"}, "Rp.100.000");
            JOptionPane.showMessageDialog(frame, "Jumlah pengiriman "+jlh, "Informasi Pengiriman", JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
    Hasil dari kode program diatas pada saat dijalankan adalah seperti gambar dibawah ini :
    input dialog custom 1


  7. Custom 4
    Pada custom kedua ini kita akan membuat contoh program sederhana perhitungan luas segitiga. Berikut adalah contoh programmnya :
    package az.dialog.input;
    import java.awt.Color;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    
    public class LuasSegitiga {
        public static void main(String[]args){
            JFrame frame = new JFrame("Hitung Luas Segitiga");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(800, 600);
            frame.getContentPane().setBackground(Color.RED);
            frame.setVisible(true);
            
            while(true){
                try{
                    double alas = Double.parseDouble(JOptionPane.showInputDialog(frame, "Masukkan Alas :", "Perhitungan Luas Segitiga", JOptionPane.INFORMATION_MESSAGE));
                    double tinggi = Double.parseDouble(JOptionPane.showInputDialog(frame, "Masukkan Tinggi :", "Perhitungan Luas Segitiga", JOptionPane.INFORMATION_MESSAGE));
                    double luas = 0.5*alas*tinggi;
                    JOptionPane.showMessageDialog(frame, "Luas Segitiga = "+luas, "Perhitungan Luas Segeitiga", JOptionPane.INFORMATION_MESSAGE);
                    break;
                }
                catch(NumberFormatException ex){
                    JOptionPane.showMessageDialog(frame, "Terjadi kesalahan inputan", "Error", JOptionPane.ERROR_MESSAGE);
                }
            }
        }
    }
    
    Hasil pada saat program diatas dijalankan adalah sebagai berikut :
    input dialog custom 2

Demikianlah tutorial Membuat Input Dialog dengan JoptionPane showInputDialog. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari blog ini, silahkan isi email anda pada isian Follow by Email dibawah.

Terima kasih... wassalam
Share:

Membuat Kotak Dialog dengan JoptionPane showMessageDialog

Bismillah… 

Penggunaan kotak dialog sering kita jumpai pada saat menggunakan aplikasi. Penggunaan kotak dialog ini secara umum digunakan untuk memberikan informasi kepada pengguna aplikasi seperti pada saat sebuah data berhasil ditambahkan, diubah, dihapus ataupun informasi lainnya. Pada bahasa pemrograman java, untuk membuat kotak dialog ini kita bisa menggunakan method static showMessageDialog() yang terdapat pada kelas JOptionPane. Pada method tersebut terdapat beberapa parameter diantaranya adalah sebagai berikut :
JoptionPane.showMessageDialog(Component parentComponent, Object message);
JoptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType);
JoptionPane.showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon);
Penjelasan Parameter :
  1. parentComponent - determines the Frame in which the dialog is displayed; if null, or if the parentComponent has no Frame, a default Frame is used. 
    Parameter ini digunakan untuk menentukan frame dimana kotak dialog tersebut ditampilkan. Jika diisi dengan nilai null, maka parameter tersebut menggunakan frame default.
  2. message - the Object to display.
    Parameter ini digunakan untuk mengisi pesan kotak dialog tersebut.
  3. title - the title string for the dialog.
    Digunakan untuk mengisi judul dialog yang dibuat.
  4. messageType - the type of message to be displayed: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE. 
    Dengan parameter ini kita dapat menentukan jenis icon kotak dialog yang ditampilkan, apakah berupa ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, or PLAIN_MESSAGE.
  5. icon - an icon to display in the dialog that helps the user identify the kind of message that is being displayed. 
    Paramter icon ini akan me-replace paramter messageType diatas dengan mengganti jenis icon yang kita tentukan.

Baiklah, disini saya akan memberikan beberapa contoh untuk menggunakan method showMessageDialog() tersebut satu persatu dengan parameter yang berbeda.
  1. Menggunakan 2 Parameter
    import javax.swing.JoptionPane;
    
    public class KotakDialog1 {
        public static void main(String[]args){
            JOptionPane.showMessageDialog(null, "Tes Kotak Dialog");
        }
    }
    

    Output dari kode diatas adalah seperti gambar dibawah ini :
    kotak dialog 2 parameter

  2. Menggunakan 4 Parameter
    import javax.swing.JoptionPane;
    
    public class KotakDialog2 {
        public static void main(String[]args){
            JOptionPane.showMessageDialog(null, "Terjadi Kesalahan", "Error", JOptionPane.ERROR_MESSAGE);
        }
    }
    

    Pada kode diatas kita menggunakan 4 buah parameter dimana untuk tipe pesan yang digunakan berupa ERROR_MESSAGE. Tipe pesan tersebut bisa anda ganti sesuai dengan kebutuhan. Adapun output dari kotak dialog diatas adalah seperti gambar dibawah ini :
    kotak dialog dengan 4 parameter


  3. Menggunakan 5 Parameter
    import javax.swing.ImageIcon;
    import javax.swing.JoptionPane;
    
    public class KotakDialog3 {
        public static void main(String[]args){
            ImageIcon icon = new ImageIcon("src/dialog/kas.png");// icon yang akan dipasang
            JOptionPane.showMessageDialog(null, "Pembayaran berhasil", "Informasi Pembayaran", JOptionPane.PLAIN_MESSAGE, icon);
        }
    }
    

    Output dari kode program diatas adalah seperti gambar dibawah ini :
    kotak dialog dengan 5 parameter

Pada program-program diatas seluruhnya memberikan nilai null pada parameter parentComponent. Seperti diketahui bahwa jika diberikan nilai null maka parameter tersebut akan merujuk pada default frame yang telah didefinisikan pada method tersebut. Nah, selanjutnya bagaimana cara menempatkan dialog tersebut pada frame yang kita inginkan ? Caranya adalah seperti berikut ini.
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JoptionPane;

public class KotakDialogFrame {
    public static void main(String[]args){
        JFrame frame = new JFrame("Frame Kotak Dialog");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 600);
        frame.getContentPane().setBackground(Color.RED);
        frame.setVisible(true);
        ImageIcon icon = new ImageIcon("src/dialog/kas.png");// icon yang akan dipasang
        JOptionPane.showMessageDialog(frame, "Pembayaran berhasil", "Informasi Pembayaran", JOptionPane.PLAIN_MESSAGE, icon);
    }
}
Output dari kode diatas adalah seperti berikut ini :
kotak dialog dengan component frame


Demikianlah tutorial Membuat Kotak Dialog dengan JoptionPane showMessageDialog. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari blog ini, silahkan isi email anda pada isian Follow by Email dibawah. 

Terima kasih... wassalam
Share:

Perlukah Maintenance Sebuah Website ?

perlukah maintenance sebuah website ?

Setelah tahapan pembuatan website selesai, selanjutnya customer ditawarkan oleh penyedia jasa layanan (web developer) untuk memakai jasa maintenance ataupun tidak. Jika tidak ingin menggunakan jasa maintenance, maka customer hanya perlu membayar domain dan hosting yang ia sewa saja. Akan tetapi bisakah sesederhana itu untuk sebuah website yang diharapkan akan mendongkrak sebuah bisnis atau membuat website tersebut dibanjiri pengunjung tanpa adanya maintenance ? Jawabannya tentu saja tidak bisa.

Customer yang tidak menggunakan jasa maintenance dari web developer berarti ia harus memiliki seorang karyawan yang menguasai hal-hal yang berhubungan dengan web server, mail server, pemrograman, desain dan hal-hal teknis lainnya. Untuk mempekerjakan seorang karyawan yang menguasai hal-hal tersebut tentu ia harus merogoh kocek yang lumayan besar karena untuk gaji seorang yang memiliki keahlian seperti itu berkisar antara 4 – 6 juta, dan bisa saja lebih. Hal ini tentu berbeda dengan menggunakan jasa maintenance dari web developer yang harganya jauh lebih murah. Baiklah, sebelum masuk lebih jauh mengenai maintenance dan apa saja didalamnya, kita harus mengetahui terlebih dahulu pengertian dari maintenance dan web maintenance itu sendiri.

Menurut Lindley R.Higgins & R.Keith Mobley “Maintenance atau pemeliharaan adalah suatu kegiatan yang dilakukan secara berulang-ulang dengan tujuan agar peralatan selalu memiliki kondisi yang sama dengan awalnya. Maintenance juga dilakukan untuk menjaga peralatan tetap berada dalam kondisi yang dapat diterima oleh penggunanya”.

Maintenance website atau web maintenance adalah jasa pengelolaan website yang diberikan oleh web developer dimana pada masa maintenance tersebut website akan dipantau dan dikelola secara rutin, baik aktivitas yang bersifat teknis maupun non-teknis.

Dengan adanya maintenance, sebuah website akan senantiasa ter-update baik dari segi core engine pada website berbasis cms, keamanan dan lain sebagainya. Menggunakan jasa maintenance website tentu akan lebih efektif dan efisien karena website anda akan dikelola oleh sesorang yang memang profesional dibidangnya.

Beberapa alasan sebuah website, khususnya yang berbasis cms perlu dilakukan maintenance adalah sebagai berikut :
  1. Website berbasis konten (CMS) seperti Joomla, Wordpress, Drupal dan sebagainya setiap saat perlu dilakukan update core engine, plugin, module, template dan eksistensi lainnya. Proses peng-update-an ini perlu dilakukan agar meningkatkan kinerja website lebih baik lagi karena memiliki sejumlah fitur terbaru.
  2. Tingkat keamanan akan terpantau dan ditingkatkan dengan baik. Jika suatu saat mengalami gangguan seperti serangan hacker, halaman tak ditemukan dan gangguan-gangguan lainnya, maka akan segera diatasi dengan baik oleh seseorang yang profesional.
  3. Konten berupa (berita, artikel dan lain sebagainya) akan senantiasa ter-update sehingga membuat pengunjung merasa kecanduan mengunjungi website anda untuk mendapatkan informasi terbaru. Hal ini jika dilakukan maka secara otomatis maka akan meningkatkan citra yang lebih baik bagi bisnis/usaha/instansi anda.
  4. Terkadang juga terdapat komentar-komentar yang kurang baik dari para pengunjung website. Maka jika dilakukan maintenance secara teratur, komentar-komentar tersebut akan segera dibersihkan sehingga tidak mengganggu pengunjung-pengunjung lain.
  5. Mampu meningkatkan jumlah pengunjung dengan melakukan optimasi-optimasi khusus pada website.

Adapun yang akan dilakukan oleh web developer pada saat proses maintenance berlangsung adalah :
  1. Menjaga keamanan website dari hal-hal yang tidak diinginkan seperti serangan hacker dan sebagainya. Sehingga pada saat hal itu terjadi, proses perbaikan akan segera dilakukan.
  2. Update eksistensi setiap ada fitur terbaru yang disediakan oleh penyedia eksistensi tersebut.
  3. Mengelola konten seperti melakukan (penambahan, perubahan dan penghapusan) konten jika customer tidak sempat untuk melakukannya. Jadi customer hanya perlu mengirimkan konten yang akan dimasukkan kemudian selanjutnya akan diproses lebih lanjut agar konten tersebut lebih SEO friendly.
  4. Optimasi kecepatan akses website.
  5. Backup data secara rutin.
  6. Update gambar dan galeri foto, menu, sidebar dan peletakan posisi masing-masing modul sesuai dengan yang anda inginkan.
  7. Optimasi SEO on Page dan SEO off Page.
  8. Memasang iklan afiliasi jika ada customer atau orang yang ingin memasangnya di website anda jika diinginkan.
  9. Memasang iklan-iklan tertentu seperti google adsense dan sebagainya jika website tersebut sudah memenuhi syarat yang ditentukan oleh penyedia iklan jika diinginkan.
    Pemasangan iklan ini tentu akan menjadi pendapatan lain bagi customer tersebut selain dari pendapatan yang didapatkan dari bisnis/usaha yang sedang ia jalankan.

Selain hal-hal diatas tentunya bisa ditambahkan lagi sesuai dengan keinginan customer. Pada umumnya web developer menyediakan paket-paket tertentu untuk jasa maintenance yang bisa dipilih oleh customer mereka. Semakin banyak dan bagus fitur yang diberikan, maka semakin mahal pulalah pengeluaran untuk membayar jasa maintenance itu sendiri. Maka sesuaikanlah dengan budget yang anda miliki untuk menggunakan jasa maintenance.
Jadi jangan hanya membeli website, tapi gunakan jugalah jasa maintenance dari web developer, karena banyak sekali manfaat yang didapat dari proses maintenance tersebut bagi anda seperti yang telah saya jelaskan diatas.
Share:

Mengambil Key dari Map Java

mengambil Key dari Map Java

Bismillah…

Pada saat menggunakan kelas collections Map dan HashMap, terkadang kita ingin mengambil key-nya saja bukan value-nya. Kelas HashMap maupun interface Map tidak menyediakan method yang secara khusus digunakan untuk mengambil key-nya. Nah, cara untuk mengambil key tersebut adalah dengan membuat method sendiri yang akan me-return key bersangkutan yang terdapat pada list Map tersebut.

Berikut adalah contoh method yang dibuat untuk mengambil key dari Map yang kita buat.

public Object getKey(Map map, Object nilai){
        for(Object key:map.keySet()){
            if(map.get(key).equals(nilai))
                return key;
        }
        return null;
}
Untuk menggunakan method diatas caranya adalah sebagai berikut :

String key = (getKey(map, "ANDI").toString(); // contoh untuk key dengan tipe data String
int key = Integer.valueOf(getKey(map, 5).toString());// contoh untuk key dengan tipe data int
double key = Double.valueOf(getKey(map, 0.5).toString());// contoh untuk key dengan tipe data double
Share:

Unique Input dengan Map dan HashMap Java

unique input dengan Map dan HashMap java

Bismillah…

Pada suatu kondisi terkadang kita diminta untuk membuat sebuah program dimana data yang dimasukkan kedalam sebuah list tidak boleh terjadi duplikasi. Hal ini semacam primary key pada database, hanya saja disini kita diminta untuk langsung memasukkannya kedalam aplikasi yang kita buat. Nah, pada bahasa pemrograman java untuk memasukkan data tersebut kita bisa memanfaatkan kelas collections Map dan HashMap.

HashMap merupakan kelas implementasi dari Map, dimana kelas Map itu sendiri digunakan untuk memetakan nilai dengan key unique. HashMap berfungsi sebagai memory record yang dapat disimpan dalam sebuah Map.

Disini saya akan memberikan contoh cara memasukkan data mahasiswa dimana key yang sama tidak akan dimasukkan lagi.

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/* 
data dengan id 1101 tidak akan dimasukkan dua kali, 
dan data yang dengan id 1101 yang diambil adalah data yang terakhir ditambahkan
*/

public class CollectionMap {
    private Map mhs = new HashMap<>();
    
    public CollectionMap(){
        mhs.put("1101", "ANDI");
        mhs.put("1102", "DONI");
        mhs.put("1103", "ALAM");
        mhs.put("1104", "DERI");
        mhs.put("1101", "ANDI");
                
        Iterator it = mhs.entrySet().iterator(); 
        while(it.hasNext())
            System.out.println(it.next());
        
        System.out.println("\nMahasiswa dengan nim 1101 adalah "+mhs.get("1101"));
    }
    
    public static void main(String[]args){
        new CollectionMap();
    }
}

Pada program diatas terdapat method put yang digunakan untuk memasukkan data kedalam list data. Kemudian untuk menampilkan seluruh data yang terdapat pada list tersebut saya gunakan interface Iterator. Sementara method get digunakan untuk mengambil nilai berdasarkan key.
Share:

Algoritma Naive Bayes Classifier Menggunakan Java

algoritma naive bayes classifier menggunakan java
Bismillah…

Sempat pada beberapa waktu yang lalu ada pengunjung blog saya meminta untuk membahas sebuah materi tentang algoritma Naive Bayes. Kemudian dialanjutkan dengan membuat contoh perhitungan sederhana algoritma tersebut menggunakan bahasa java. Dan alhamdulillah, sekarang saya bisa menyempatkan waktu untuk menulis materi yang dimintanya tersebut.

Seperti diketahui bahwa Naive Bayes adalah salah satu machine learning yang sampai saat ini masih digunakan untuk kasus klasifikasi data. Naive Bayes ditemukan oleh seorang ilmuan Inggris bernama Thomas Bayes. Pada perhitungannya, Naive Bayes menggunakan probabilitas dengan konsep dasar Teorema Bayes, yaitu teorema dalam ilmu statistik untuk menghitung peluang sebuah kejadian.

Teori Bayesian : Sebagai Dasar
  • X adalah data sampel dengan kelas (label) yang tidak diketahui
  • adalah hipotesa bahwa X adalah data dengan kelas (label) C. P(H) adalah peluang dari hipotesa H.
  • P(X) adalah peluang data sampel yang akan diamati.
  • P(X|H) merupakan peluang data sampel X, bila diasumsikan bahwa hipotesa benar (valid).
  • Untuk masalah klasifikasi, yang dihitung adalah P(H|X), yaitu peluang bahwa hipotesa benar (valid) untuk data sampel yang diamati :


Berikut ini adalah contoh sampel data yang akan kita gunakan untuk perhitungan algoritma Naive Bayes.
Age
Income
Student
Credit Rating
Buy Com
<=30
high
no
fair
no
<=30
high
no
excellent
no
31 s.d 40
high
no
fair
yes
>40
medium
no
fair
yes
>40
low
yes
fair
yes
31 s.d 40
low
yes
excellent
yes
<=30
medium
no
fair
no
<=30
low
yes
fair
yes
>40
medium
yes
fair
yes
<=30
medium
yes
excellent
yes
31 s.d 40
medium
no
excellent
yes
31 s.d 40
high
yes
fair
yes
>40
medium
no
excellent
no

Kemudian jika ada sebuah data baru yang belum memiliki kelas misalnya : x = (age<=30, income = medium, student = yes, credit_rating = fair), maka kelas dari data baru ini dapat dicari dengan cara berikut :
  • Hitung P(Xk|Ci) untuk setiap kelas i :
    P(age<=30 | buy_com = yes) = 2/9 = 0.222
    P(age<=30 | buy_com = no) = 3/5 = 0.6
    P(income = medium | buy_com = yes) = 4/9 = 0.444
    P(income = medium | buy_com = no) = 2/5 = 0.4
    P(student = yes | buy_com = yes) = 6/9 = 0.667
    P(student = yes | buy_com = no) = 1/5 = 0.2
    P(credit_rating = fair | buy_com = yes) = 6/9 = 0.667
    P(credit_rating = fair | buy_com = no ) = 2/5 = 0.4


  • Hitung P(X|Ci) untuk setiap kelas.
    P(X|buy_com = yes) = 0.222*0.444*0.667*0.667 = 0.044
    P(X|buy_com = no) = 0.6*0.4*0.2*0.4 = 0.019
  • P(X|Ci) * P(Ci)
    P(X|buy_com = yes) * P(buy_com = yes) = 0.028
    P(X|buy_com = no) * P(buy_com = no) = 0.007
  • Sehingga diketahui kelas dari data yang dimasukkan berada pada kelas (yes) karena memiliki nilai probabilitas yang besar.

Nah, sesudah tahu langkah perhitungannya selanjutnya adalah implementasi algoritma diatas kedalam program java. Data sampel diatas akan kita ambil dari database langsung. Untuk mengunduh data tersebut dalam format .sql bisa membuka link ini http://adf.ly/1fy60F. Jika sudah langsung saja kita ikuti langkah-langkah pembuatannya :

  1. Terlebih dahulu buat kelas Koneksi.java yang digunakan untuk koneksi ke database yang di unduh tadi dan masukkan kode dibawah ini.
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class Koneksi {
        public static Connection getConnection(){
            Connection con=null;
            try{
                Class.forName("com.mysql.jdbc.Driver");
                con=DriverManager.getConnection("jdbc:mysql://localhost:3306/bayes","root","");
            }
            catch(ClassNotFoundException | SQLException e){
                e.printStackTrace();
            }
            return con;
        }
    }
    
    Untuk nama database, sesuaikan dengan database yang telah anda buat sebelumnya.
  2. Setelah itu buat lagi sebuah kelas dengan nama Key.java. Kelas ini digunakan untuk memasukkan informasi kelas atau label yang terdapat pada database.
    
    public class Key {
        private int k;
        private String info;
        private double value;
    
        public Key(){
            this.k = 0;
            this.info = null;
            this.value = 0;
        }
        public Key(int k, String info){
            this.k = k;
            this.info = info;
        }
    
        public Key(int k, String info, double value){
            this.k = k;
            this.info = info;
            this.value = value;
        }
    
        public int getK(){
            return k;
        }
    
        public String getInfo(){
            return info;
        }
    
        public double getValue(){
            return value;
        }
    
        public void setK(int k) {
            this.k = k;
        }
    
        public void setInfo(String info) {
            this.info = info;
        }
    
        public void setValue(double value) {
            this.value = value;
        }
    }
    


  3. Setelah itu selanjutnya adalah membuat kelas inti yang memuat algoritma Naive Bayes. Nama kelas ini beri saja dengan nama Bayes.java.
    
    import java.text.DecimalFormat;
    import java.util.ArrayList;
    
    public class Bayes {
        private Object[][] data;
        private Object[] category;
        private Object[][] input;
        private double[][] temp;
        public ArrayList key = new ArrayList<>();
        private DecimalFormat df = new DecimalFormat("#.####");
        public ArrayList dataBaru = new ArrayList<>();
    
        public Bayes(Object[][] data, Object[] category, Object[][] input, int label, int jlhAtt){
            this.data = data;
            this.category = category;
            this.input = input;
            temp = new double[label][jlhAtt];
        }
    
        public void classify(int sum[]){
            int label[];
            int total = 0;
            for(int t = 0; t < sum.length; t++)
                    total+=sum[t];
            
            for(int k = 0; k < input.length; k++){
                for(int y = 0; y < input[k].length; y++){
                    label = new int[sum.length];                
                    for(int i = 0; i < data.length; i++){
                        for(int j = 0; j < data[i].length; j++){
                            if(data[i][j].equals(input[k][y])){
                                for(int v = 0; v < key.size(); v++)
                                    if(category[i].equals(key.get(v).getInfo()))
                                        label[key.get(v).getK()]++;                           
                            }
                        }
                    }
                    
                    //P(Xk|Ci)
                    for(int l = 0; l < label.length; l++){
                            temp[l][y] = (double)label[l]/sum[l];                       
                            System.out.println("P(Xk|Ci) variabel ke "+(y+1)+" = "
                                    + "("+(double)label[l]+"/"+sum[l]+"="+df.format(temp[l][y])+")");
                    }
                    System.out.println("------------------------------------------");
                }
    
                // P(X|Ci)
                double X[] = new double[sum.length];
                for(int i = 0; i < temp.length; i++){
                    for(int j = 0; j < temp[i].length; j++){
                        if(j!=0) // (47)
                            X[i] *= (double)temp[i][j];
                        else
                            X[i] = (double)temp[i][j]; 
                    }
                    System.out.println("P(X|Ci) : kelas ke ("+(i+1)+") = "+df.format(X[i]));
                }
                System.out.println("------------------------------------------");
                // P(X|Ci) * P(Ci)
                double c[] = new double[sum.length];
                for(int i = 0; i < X.length; i++){
                    c[i] = (double)sum[i]/total;                
                }
                addNewLabel(c, X, k);
            }
        }
    
        public void addNewLabel(double c[], double X[], int k){
            double max = -1;
            String info = "";
            for(int i = 0; i < c.length; i++){
                if(c[i]*X[i] > max){
                    max = c[i]*X[i];
                    info = key.get(i).getInfo();
                }
                if(i==c.length-1)
                    dataBaru.add(new Key(k, info, max));
                
                System.out.println("P(X|Ci) * P(Ci) kelas ke ("+(i+1)+") = "+df.format(c[i]*X[i]));
            }
        }
    
        public ArrayList getNewLabel(){
            return dataBaru;
        }
    }
    


  4. Terakhir buat sebuah kelas dengan nama Main.java untuk mencoba menjalankan algoritma Naive Bayes yang sudah kita buat diatas.
    
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.HashSet;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    
    public class Main {
        private Object[][] data;
        private Object[] category;
        private Object[][] klasifikasi = {{"<=30","medium","yesn","fair"}};// isi data input yang akan di klasifikasi disini
        private HashSet hash = new HashSet<>();    
        int sum[];
        private Bayes b;
        
        public void read_db()throws Exception{
            String Query = "select * from data_bayes";
            Statement st = Koneksi.getConnection().createStatement();
            ResultSet rs = st.executeQuery(Query);
            data = new Object[getRow()][5];
            
            System.out.println("Data :");
            int i = 0;
            while(rs.next()){
                for(int j = 0; j < data[0].length; j++){
                    data[i][j] = rs.getString(j+1);
                    System.out.print(data[i][j]+", ");
                }
                System.out.println();
                i++;
            }
            System.out.println("-----------------------------------");
            category = new Object[data.length];
            for(i = 0; i < data.length; i++){
                category[i] = data[i][data[i].length-1];
                hash.add(String.valueOf(category[i]));
            }        
            sum = new int[hash.size()];        
        }
        
        public void proses(){
            b= new Bayes(data, category, klasifikasi, hash.size(), 4);        
            if(!b.dataBaru.isEmpty()){
                b.dataBaru.clear();
                b.key.clear();
            }
            int idx = 0;
            for(String s:hash){
                for(int ii = 0; ii < category.length; ii++){
                    if(s.equals(String.valueOf(category[ii]))){
                        sum[idx]+=1;
                    }
                }
                b.key.add(new Key(idx, s));
                idx++;
            }
            b.classify(sum);
            System.out.println("\nHasil Klasifikasi :");
            int row = 0;
            for(Key key:b.getNewLabel()){
                System.out.println("Data ke "+(row+1)+" diklasifikasikan ke kelas :\t"+key.getInfo());
                row++;
            }
        }
        
        public Main(){
            try {
                read_db();
                proses();
            } catch (Exception ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        
        public int getRow()throws Exception{
            int row = 0;
            String Query = "SELECT COUNT(*) as baris FROM data_bayes";
            Statement st = Koneksi.getConnection().createStatement();
            ResultSet rs = st.executeQuery(Query);
            while(rs.next())
                row = rs.getInt("baris");
            st.close();
            rs.close();
            return row;
        }
        
        public static void main(String[]args){
            new Main();
        }
    }
    


  5. Setelah dijalankan terlihat hasilnya seperti gambar dibawah ini :
    hasil running naive bayes

Demikianlah tutorial Algoritma Naive Bayes Classifier Menggunakan Java. Semoga ada manfaatnya bagi anda dan saya. Jika ada pertanyaan mengenai tutorial diatas, silahkan bertanya melalui form komentar dibawah. Kemudian jika ingin meng-update secara rutin artikel yang kami posting dari blog ini, silahkan isi email anda pada isian Follow by Email dibawah.
Project program diatas bisa anda unduh melalui link ini http://adf.ly/1fusYL.

Terima kasih... wassalam
Share:
DigitalOcean Referral Badge
www.domainesia.com
Powered by Blogger.