yBlog – IT is Simple

a little piece about IT

Membuat nilai JComboBox berbeda dari item yang ditampilkan

Posted by Yudianto Sujana pada Desember 24, 2008

Kadang kita memerlukan nilai yang didapat dari ComboBox berbeda dari yang ditampilkan, misalnya jika kita memilih kota Yogyakarta, maka data yang kita peroleh bukan String “Yogyakarta” melainkan kode area telepon “0274”.

jcombo1 jcombo2

Bagi programmer web yang biasa menggunak HTML hal ini sangat mudah dilakukan, karena kita bisa set value berbeda dari apa yang ditampilkan, tetapi bagaimana caranya jika di Java Swing?

Ada beberapa cara untuk dapat melakukan hal tersebut, bisa membuat model sendiri (saya masih belum ngerti) atau menggunakan library glazedlists (belum coba). Tetapi sebenarnya tanpa kedua cara tersebut kita masih dapat membuatnya.

Oke misalkan kita punya sebuah tabel yang berisi data kota yang kita beri nama kota

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| kode  | varchar(4)  | NO   | PRI |         |       |
| nama  | varchar(20) | NO   |     |         |       |
+-------+-------------+------+-----+---------+-------+

lalu kita isikan beberapa data

+------+------------+
| kode | nama       |
+------+------------+
| 021  | Jakarta    |
| 022  | Bandung    |
| 0274 | Yogyakarta |
| 0271 | Surakarta  |
+------+------------+

Langkah selanjutnya kita akan membuat class POJO dari tabel kota tersebut

public class Kota {
    private String kode;
    private String nama;

    public Kota(String kode, String nama) {
        this.kode = kode;
        this.nama = nama;
    }
    public String getKode() {
        return kode;
    }
    public void setKode(String kode) {
        this.kode = kode;
    }
    public String getNama() {
        return nama;
    }
    public void setNama(String nama) {
        this.nama = nama;
    }
}

Berikutnya kita membuat JFrame yang didalamnya terdapat komponen JComboBox dan JTextField seperti gambar diatas. Selanjutnya kita membuat sebuah List untuk menampung objek kota.

private List<Kota> lstKota = new ArrayList<Kota>();

lalu di dalam konstruktor frame kita akan membuat kode untuk mengambil data kota dari tabel dan dimasukkan ke dalam JComboBox.

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/latihan", "root", "root");
Statement st = conn.createStatement();
String sql = "select * from kota";
ResultSet rs = st.executeQuery(sql);
while(rs.next()) {
    Kota kt = new Kota(rs.getString("kode"),rs.getString("nama"));
    lstKota.add(kt);
    jComboBox1.addItem(kt.getNama());
}

selanjutnya di dalam event ActionPerformed JComboBox masukkan kode berikut untuk mengambil “kode” kota

jTextField1.setText(lstKota.get(jComboBox1.getSelectedIndex()).getKode());

Jika sudah selesai silahkan coba dijalankan.

Kode diatas saya coba dan berhasil menggunakan JDK 1.5 dan Netbeans 6.5

Terima Kasih untuk temen-temen di JUG-Joglosemar yang sudah membantu saya belajar Java

Selamat belajar 🙂

Iklan

Posted in Java | Dengan kaitkata: , , | 5 Comments »