ComboBox adalah komponen GUI Swing pada Java yang digunakan untuk menampilkan suatu item dalam bentuk menu kebawah atau drop down list. Item yang terdapat pada ComboBox bisa kita tambahkan secara hard coding, yaitu kita ketik manual pada saat kita melakukan coding. Misal :
1 2 3 4 5 6 7 |
JComboBox combobox=new JComboBox(); combobox.addItem("Agung Setiawan"); combobox.addItem("Hauril Maulida Nisfari"); for(int i=1;i<=10;i++){ combobox.addItem(i); } |
ataupun itemnya dinamis berasal dari database.
Pada tutorial ini saya ingin berbagi tentang teknik meload data dari database untuk dimasukkan sebagai item pada combobox. Aplikasi yang akan saya buat cukup menggunakan plain Jdbc, tidak menggunakan ORM seperti Hibernate dengan tujuan agar pembaca pemula pun bisa memahami teknik tersebut.
Hasil akhir dari tutorial ini adalah seperti nampak pada gambar berikut:
Setiap kali item pada ComboBox diubah maka nama yang muncul pada textbox pun akan menyesuaikan sesuai dengan data yang berada pada item ComboBox.
Untuk tutorial ini saya menggunakan sebuah table dengan nama mahasiswa yang memiliki struktur sebagai berikut:
1 2 3 4 5 6 7 |
mysql> desc mahasiswa; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | nim | varchar(25) | NO | PRI | NULL | | | nama | varchar(50) | NO | | NULL | | +-------+-------------+------+-----+---------+-------+ |
Silahkan buat table tersebut dan tambahkan beberapa data untuk mengisi tabel diatas.
Langkah selanjutnya adalah menciptakan projek pada Netbeans dengan nama ComboBoxDB. Tambahkan beberapa package sehingga susunannya menjadi seperti gambar berikut:
Berikutnya adalah menambahkan library Mysql JDBC Driver dengan cara klik kanan pada node Libraries kemudian pilih Add Library > MySQL JDBC Driver dan tampilan pada struktur project kita kali ini akan tampak menjadi seperti gambar dibawah ini:
Tambahkan sebuah kelas domain yang merepresentasikan data yang ada pada database pada package comboboxdb.model, beri nama kelas sebagai Mahasiswa. Ketikkan kode berikut pada kelas tadi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package comboboxdb.model; public class Mahasiswa { private String nim; private String nama; public String getNim() { return nim; } public void setNim(String nim) { this.nim = nim; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } @Override public String toString(){ return nim; } } |
Setelah kelas domain model tercipta sekarang saatnya membuat kelas service pada package comboboxdb.service. Beri nama MahasiswaService lalu ketikkan kode dibawah ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
package comboboxdb.service; import comboboxdb.model.Mahasiswa; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class MahasiswaService { Connection connection; PreparedStatement preparedStatement; Mahasiswa mahasiswa; List<Mahasiswa> mahasiswas=new ArrayList<Mahasiswa>(); public MahasiswaService(Connection connection){ this.connection=connection; } public List<Mahasiswa> getAllMahasiswa() throws SQLException{ preparedStatement=connection.prepareStatement("SELECT * FROM mahasiswa"); ResultSet rs=preparedStatement.executeQuery(); while(rs.next()){ mahasiswa=new Mahasiswa(); mahasiswa.setNim(rs.getString("nim")); mahasiswa.setNama(rs.getString("nama")); mahasiswas.add(mahasiswa); } return mahasiswas; } } |
Kelas service seringnya digunakan untuk melakukan operasi-operasi untuk memanipulasi data pada tabel database. Akan tetapi untuk kesederhanaan tutorial ini maka saya hanya membuat method untuk operasi mengambil data dari database.
Buat juga kelas untuk menangani koneksi ke database. Buat kelas ini pada package comboboxdb.util dan beri nama Koneksi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package comboboxdb.util; import com.mysql.jdbc.jdbc2.optional.MysqlDataSource; import java.sql.Connection; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; public class Koneksi { MysqlDataSource dataSource=new MysqlDataSource(); public Koneksi() { dataSource.setUser("root"); dataSource.setPassword("root"); dataSource.setServerName("localhost"); dataSource.setDatabaseName("comboboxdb"); } public Connection getConnection(){ try { return dataSource.getConnection(); } catch (SQLException ex) { Logger.getLogger(Koneksi.class.getName()).log(Level.SEVERE, null, ex); } return null; } } |
Konfigurasi yang berhubungan dengan database seperti username, password, server database dan nama database terdapat pada kelas ini.
Pada tahap ini kia telah menciptakan kelas-kelas pendukung aplikasi. Next step adalah membuat kelas utama kita yang berupa tampilan form menggunakan Java Swing. Buatlah kelas JFrame pada package comboboxdb.ui dengan nama FrameMain yang berisi JComboBox, JLabel, JTextField dan JButton.Desainlah tampilannya seperti pada gambar aplikasi yang sudah jadi diatas tadi.
Kita menginginkan pada saat aplikasi berjalan untuk pertama kali maka data dari database sudah masuk pada item di ComboBox. Untuk mencapainya maka kita perlu menambahkan kode pada constructor di kelas FramMain. Ubah menjadi seperti dibawah ini dan tambahkan juga method load() yang berguna meload data dari database dan kemdudian dimuat sebagai item pada ComboBox:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
MahasiswaService mahasiswaService; public FrameMain() throws SQLException { initComponents(); this.setLocationRelativeTo(null); Koneksi koneksi=new Koneksi(); mahasiswaService=new MahasiswaService(koneksi.getConnection()); load(); jComboBoxMahasiswa.addActionListener(new ComboBoxListener()); } private void load() throws SQLException{ jComboBoxMahasiswa.removeAllItems(); List<Mahasiswa> mahasiswas=mahasiswaService.getAllMahasiswa(); for(Mahasiswa mhs:mahasiswas){ jComboBoxMahasiswa.addItem(mhs); } } |
Kamu yang teliti pasti akan bertanya apa kegunaan dari statement ini
1 |
jComboBoxMahasiswa.addActionListener(new ComboBoxListener()); |
Fungsinya adalah supaya ComboBox kita merespon perubahan item dengan menampilkan nama mahasiswa sesuai item Nim yang dipilih pada ComboBox. Implementasinya terdapat pada kelas private yang bernama ComboBoxListener. Buatlah private kelas didalam kelas FrameMain dengan nama ComboBoxListener.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private class ComboBoxListener implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { Mahasiswa mahasiswa=(Mahasiswa) jComboBoxMahasiswa.getSelectedItem(); jTextFieldNama.setText(mahasiswa.getNama()); } } // Variables declaration - do not modify private javax.swing.JButton jButtonTutup; private javax.swing.JComboBox jComboBoxMahasiswa; ... ... |
Dari coding diatas terlihat bahwa text field nama akan berisi nama mahasiswa sesuai item pada ComboBox.
Struktur akhir projek adalah seperti berikut:
Coba running FrameMain. Jika tidak ada kesalahn seharusnya aplikasi berjalan dengan lancar.
Untuk mengetes apakah datanya benar, kita coba cocokkan dengan data yang berada di database
1 2 3 4 5 6 7 8 9 10 |
mysql> select * from mahasiswa; +-----------+----------------+ | nim | nama | +-----------+----------------+ | L2F008002 | Agung Setiawan | | L2F008034 | Fakkar Robi | | L2F008098 | Yosua Alvin | | L2F008100 | Yuli Syarif | +-----------+----------------+ 4 rows in set (0.00 sec) |
Jika masih mengalami kesulitan saya persilahkan untuk bertanya langsung melalui fitur komentar pada artikel ini.
Happy Coding 😀
tutorialnya keren,,kira-kira kalo di terapin di java web bisa ga ya?
soalnya ane lagi cari-cari tutorial pake ava web cara masukin ke database dengan combo box tapi blm nemu…
thnks mas Agung.
Artikel yang menarik menampilkan data dari database di obyek combo box. Untuk contoh penggunaan obyek combo box yang lain dapat mengunjungi artikel program java sederhana menggunakan kelas JComboBox
Dibuat class – class baru juga ?
apa fungsinya class yaa ?
Boleh mminta source code gan?
Maaf mau tanya..
For(Mahasiswa mhs: mahasiswas){jComboBoxMahasiswa.addItem(mhs);}
mhs nya masih error_ Mahasiswa cannot be converted to String
Solusinya gmna ya?
CARA MENYIMPAN KODE BARANG SECARA OTOMATIS DI DATABASE , TAPI VIEWNYA NAMA BARANG DI COMBOBOX.
sangat bermanfaat terima kasih