-->

Membuat load data otomatis melalui JComboBox

Oke langsung saja karena ada yang nanya mengenai bagaimana kita dapat melakukan loading data dan mendapatkan data pada dua JComboBox yang akan kita buat langsung saya berikan caranya...

Nah pada kasus ini misalnya ada kasus mengenai 2 JComBoBox yaitu Propinsi dan Kabupaten. Dimana data yang akan kita gunakan untuk kabupaten adalah dinamis berdasarkan propinsi yang dipilih..

Langsung saja lihat bagaimana tampilan yang akan kita gunakan nanti dalam mendevelop nanti ..

Setelah melihat gambar tersebut kita langsung lihat bagaimana kita melakukan koding tersebut


package tutorial;

import java.util.HashMap;
import javax.swing.DefaultComboBoxModel;

// @author mrhands
public class Contoh extends javax.swing.JFrame {
    //load data awal untuk propinsi
    private String[] propinsi = new String[]{"NAD", "Sumatera Selatan", "Jawa Tengah", "Jawa Timur"};
    //load data awal untuk kode propinsi
    private Integer[] kodePropinsi = new Integer[]{11, 15, 33, 35};
    private HashMap<String, Integer> hashPropinsi;
    private HashMap<String,Integer> hashKab;

    public Contoh() {
        initComponents();
        hashPropinsi = new HashMap<String, Integer>();

        //jika data yang kita gunakan ada didalam database kita dapat melakukan
        //retrieve data dulu dari database kemudian mentransfer nilainya ke
        //baris berikut..
        for (int i = 0; i < propinsi.length; i++) {
            hashPropinsi.put(propinsi[i], kodePropinsi[i]);
        }
        DefaultComboBoxModel modelPropinsi = new DefaultComboBoxModel(propinsi);
        comboPropinsi.setModel(modelPropinsi);
        String[] kabAceh = new String[]{"Simelue", "Aceh Utara", "Aceh Selatan"};
        Integer[] kodeKab = new Integer[]{1102, 1103, 1105};
        //load data pertama kali adalah untuk propinsi aceh
        DefaultComboBoxModel modelKab = new DefaultComboBoxModel(kabAceh);
        comboKab.setModel(modelKab);
    }

        @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        comboPropinsi = new javax.swing.JComboBox();
        comboKab = new javax.swing.JComboBox();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        comboPropinsi.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
        comboPropinsi.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                comboPropinsiActionPerformed(evt);
            }
        });

        comboKab.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));

        jLabel1.setText("Propinsi :");

        jLabel2.setText("Kabupaten");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(47, 47, 47)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jLabel1)
                    .addComponent(jLabel2))
                .addGap(69, 69, 69)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(comboKab, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(comboPropinsi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(142, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(comboPropinsi, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(comboKab, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addContainerGap(205, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

    private void comboPropinsiActionPerformed(java.awt.event.ActionEvent evt) {

        String selectedProp = (String) comboPropinsi.getSelectedItem();
        //kode yang didapat berdasarkan pilihan propinsi dari user
        //dari kode ini nanti jika ingin mencari data berdasarkan kabupaten ini
        //maka retrieve data kabupaten berdasarkan selectedPropKode ini...
        int selectedPropKode = hashPropinsi.get(selectedProp);

        if (selectedPropKode == 33) {
            String JawaTengahKab[] = new String[]{"Boyolali", "Semarang", "Kendal", "Salatiga"};
            Integer [] kodeKabJateng=new Integer[]{3309,3301,3304,3308};
            hashKab=new HashMap<String, Integer>();
            for(int i=0;i<JawaTengahKab.length;i++){
                hashKab.put(JawaTengahKab[i], kodeKabJateng[i]);
            }
            DefaultComboBoxModel modelKab = new DefaultComboBoxModel(JawaTengahKab);
            comboKab.setModel(modelKab);
        }

    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Contoh().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JComboBox comboKab;
    private javax.swing.JComboBox comboPropinsi;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    // End of variables declaration
}




Oke dari kode tersebut kita dapat mendapatkan hasilnya sebagai berikut..


Yap dari sini kita sudah bisa membuat kode dinamis yang bisa kita gunakan untuk meload model dari comboKab berdasarkan pilihan dari comboProp. Dan kita sudah bisa mendapatkan kode Propinsi atau kabupaten...

Untuk meload data dari database silahkan disesuaikan sendiri bagaimana cara meload data tersebut..

Semoga bermanfaat
Facebook Comments

8 komentar

maturnuwun sanged,, berguna sekali nih. heeee ^^

Balas

Kalo ada yang mau ditanyakan tanyain aja lagi via email juga gpp biar bisa di share dengan yang lain... ^^

Balas

mas mau sharing donk.. oleh minta YM nya?? mas add ym aku ya islam_renit
or skype renita.widiastari

Balas

maaf ymku jarang ol ke gtalk aja di viyanatmail@gmail.com

Balas

mas kalau itu yang ngambilnya dari database gimana?

Balas

Tinggal kamu sesuaikan aja data yang di string kabupaten dan propinsi itu hasil dari query database

Balas

kalo aq lebih suka maen di event PopUpMenuWillBecomeInvisible sih kalo kasus CmbBox, soalnya kadang kalo item nya udah di set dari mulai bikin constructor, method nya sendiri bakal ke eksekusi duluan..hehe :D

Balas

Your content is excellent but with pics and videos,
this blog could certainly be one of the best in its field.
Excellent blog!
alternatives to kissanime

Balas