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 :
|
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:
|
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
|
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
|
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)
|
Tidak ada komentar:
Posting Komentar