Tuesday, February 24, 2009

Menangani Item Listener pada JComboBox

Menangani Item Listener pada JComboBox

JComboBox
secara visual berbentuk komponen drop-down yang dapat digunakan untuk memilih item tertentu. Komponen ini menampilkan satu item dalam satu waktu. Kelas ini terdapat pada paket javax.swing sehingga nama lengkapnya adalah javax.swing.JComboBox.

Jika ingin mendeteksi perubahan item pada JComboBox, maka objek dari kelas ini perlu didaftarkan dengan method addItemListener(ItemListener i) dimana i adalah kelas yang mengimplementasikan interface ItemListener.

Contoh pendeteksian perubahan item pada kelas JComboBox adalah sebagai berikut,
Misalnya contoh kasus:
1) Terdapat sebuah JComboBox yang menyimpan kode barang
2) Jika user memilih kode (merubah item) pada JComboBox tersebut, maka secara otomatis menampilkan nama barang dan harga pada JTextField.

Untuk menjawab soal ini, pertama buat tampilan user interface dengan deklarasi misalnya seperti berikut:

private JLabel labelKode = new JLabel("Kode");
private JComboBox comboKode = new JComboBox();

private JLabel labelNama = new JLabel("Nama");
private JTextField textNama = new JTextField(15);

private JLabel labelHarga = new JLabel("Harga");
private JTextField textHarga = new JTextField(15);

Untuk tampilannya terserah saja. Jangan lupa untuk mendaftarkan item listener dengan method addItemListener(),

comboKode.addItemListener(this);

Variabel this ini menunjukkan bahwa kelas yang sekarang dibuat ini telah mengimplementasikan ItemListener. Pendeteksian perubahan item ini ditempatkan pada method itemStateChanged(),

public void itemStateChanged(ItemEvent ie)
{
String kode = comboKode.getSelectedItem().toString();
String data[] = ambilHarga(kode);

textNama.setText(data[0]);
textHarga.setText(data[1]);
}

ambilHarga(kode) adalah method yang digunakan untuk mengambil keterangan nama barang dan harganya dari database. Pada contoh ini digunakan database MS Access. Isi method ini adalah:

private String[] ambilHarga(String kode)
{
String harga[] = new String[2];
try
{
Class.forName("jstels.jdbc.mdb.MDBDriver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:jstels:mdb:../Database/Penjualan.mdb");

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT nama, harga FROM TabelBarang WHERE kode='" + kode + "'");

while (rs.next())
{
harga[0] = rs.getObject("nama").toString();
harga[1] = rs.getObject("harga").toString();
}

rs.close();
stmt.close();
conn.close();
}
catch(Exception e)
{
System.out.println(e);
}

return (harga);
}

Penjelasan tentang cara koneksi ke database dengan JDBC dapat dilihat pada postingan sebelumnya. Jika dijalankan hasilnya adalah sebagai berikut:


Source code lengkap dapat di download pada link ini.