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