Project Source Code

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 49

Project Source Code:

// Step 1 Create A Class Named "comboItem"

package javaapp;

public class comboItem {

private int CatId;


private String CatName;

public comboItem(int catId, String catName){


this.CatId = catId;
this.CatName = catName;
}

public int getCatId(){


return CatId;
}

public void setCatId(int id){


this.CatId = id;
}

public String getCatName(){


return CatName;
}

public void setCatName(String catName){


this.CatName = catName;
}
}

// Step 2 Create A Class Named "MyQuery"


package javaapp;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;

public class MyQuery {

public Connection getConnection(){


Connection con = null;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost/project", "root","");
} catch (SQLException ex) {
Logger.getLogger(Query.class.getName()).log(Level.SEVERE, null, ex);
}
return con;
}

public HashMap<String, Integer> populateCombo(){


HashMap<String, Integer> map = new HashMap<String, Integer>();
Connection con = getConnection();
Statement st;
ResultSet rs;

try {
st = con.createStatement();
rs = st.executeQuery("SELECT `CAT_ID`, `CAT_NAME` FROM `categories`");
comboItem cmi;

while(rs.next()){
cmi = new comboItem(rs.getInt(1), rs.getString(2));
map.put(cmi.getCatName(), cmi.getCatId());
}

} catch (SQLException ex) {


Logger.getLogger(MyQuery.class.getName()).log(Level.SEVERE, null, ex);
}

return map;
}
}

// Step 3 Create A JFrame Named "ComboWithKeyAndValue"

package javaapp;

import java.util.HashMap;

/**
*
* @author 1bestcsharp.blogspot.com
*/
public class ComboWithKeyAndValue extends javax.swing.JFrame {

public ComboWithKeyAndValue() {
initComponents();
BindCombo();
}

// create the methode to fill combobox with keys and values


public void BindCombo(){
MyQuery mq = new MyQuery();
HashMap<String, Integer> map = mq.populateCombo();
for(String s : map.keySet()){
jComboBox1.addItem(s);
}
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jLabel1 = new javax.swing.JLabel();


jComboBox1 = new javax.swing.JComboBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N


jLabel1.setText("jLabel1");

jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());


getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(54, 54, 54)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 135,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 57,
Short.MAX_VALUE)
.addComponent(jLabel1)
.addGap(213, 213, 213))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(61, 61, 61)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, 22,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(267, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {


MyQuery mq = new MyQuery();
HashMap<String, Integer> map = mq.populateCombo();
jLabel1.setText(map.get(jComboBox1.getSelectedItem().toString()).toString());
}

public static void main(String args[]) {


try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(ComboWithKeyAndValue.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(ComboWithKeyAndValue.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(ComboWithKeyAndValue.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(ComboWithKeyAndValue.class.getName()).log(java.util.logging.Level.S
EVERE, null, ex);
}

java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ComboWithKeyAndValue().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
// End of variables declaration
}

Part 2

Project Source Code:

// Step 1 Create A Class Named "Product"


package javaapp;

public class Product {

private String id;


private String name;
private int qte;
private String price;
private int catId;

public Product(){}

public Product(String Id, String Name, int Qte, String Price, int CatId){

this.id = Id;
this.name = Name;
this.qte = Qte;
this.price = Price;
this.catId = CatId;
}

public String getID(){


return id;
}

public void setID(String ID){


this.id = ID;
}

public String getName(){


return name;
}

public void setName(String Name){


this.name = Name;
}
public int getQte(){
return qte;
}

public void setQte(int Qte){


this.qte = Qte;
}

public String getPrice(){


return price;
}

public void setPrice(String Price){


this.price = Price;
}

public int getCatID(){


return catId;
}

public void setCatID(int CatID){


this.catId = CatID;
}

// Step 2 Create A Class Named "MyQuery"

package javaapp;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
*
* @author 1bestcsharp.blogspot.com
*/
public class MyQuery {

public Connection getConnection(){


Connection con = null;
try {
con = DriverManager.getConnection("jdbc:mysql://localhost/project", "root","");
} catch (SQLException ex) {
Logger.getLogger(Query.class.getName()).log(Level.SEVERE, null, ex);
}
return con;
}

public ArrayList<Product> getData(int catID){

ArrayList<Product> list = new ArrayList<Product>();


Connection con = getConnection();
Statement st;
ResultSet rs;

try {
st = con.createStatement();
rs = st.executeQuery("SELECT `ID_PRO`, `PRO_NAME`, `QTE_IN_STOCK`, `PRICE`,
`ID_CAT` FROM `products` WHERE `ID_CAT` = "+ catID);

Product p;
while(rs.next()){
p = new Product(
rs.getString("ID_PRO"),
rs.getString("PRO_NAME"),
rs.getInt("QTE_IN_STOCK"),
rs.getString("PRICE"),
rs.getInt("ID_CAT")
);
list.add(p);
}

} catch (SQLException ex) {


Logger.getLogger(MyQuery.class.getName()).log(Level.SEVERE, null, ex);
}
return list;
}

// Step 3 Create A JFrame Named "JComboTutorial"

package javaapp;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class JComboTutorial extends javax.swing.JFrame {

public JComboTutorial() {
initComponents();
BindCombo();
}

public void BindCombo(){


MyQuery mq = new MyQuery();
Connection con = mq.getConnection();
Statement st;
ResultSet rs;

try {
st = con.createStatement();
rs = st.executeQuery("SELECT `CAT_ID`, `CAT_NAME` FROM `categories`");
while(rs.next()){
combo1.addItem(rs.getInt(1));
}
} catch (SQLException ex) {
Logger.getLogger(JComboTutorial.class.getName()).log(Level.SEVERE, null, ex);
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

combo1 = new javax.swing.JComboBox();


combo2 = new javax.swing.JComboBox();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setLocationByPlatform(true);

combo1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
combo1ActionPerformed(evt);
}
});

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(28, 28, 28)
.addComponent(combo1, javax.swing.GroupLayout.PREFERRED_SIZE, 190,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 200,
Short.MAX_VALUE)
.addComponent(combo2, javax.swing.GroupLayout.PREFERRED_SIZE, 190,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(74, 74, 74))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(84, 84, 84)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(combo1, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(combo2, javax.swing.GroupLayout.PREFERRED_SIZE, 40,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(176, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void combo1ActionPerformed(java.awt.event.ActionEvent evt) {

combo2.removeAllItems();
MyQuery mq = new MyQuery();
ArrayList<Product> list = mq.getData((int)combo1.getSelectedItem());
for(int i = 0; i < list.size(); i++){
combo2.addItem(list.get(i).getName());
}

public static void main(String args[]) {


try {
for (javax.swing.UIManager.LookAndFeelInfo info :
javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(JComboTutorial.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(JComboTutorial.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(JComboTutorial.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(JComboTutorial.class.getName()).log(java.util.logging.Level.SE
VERE, null, ex);
}
//</editor-fold>

/* Create and display the form */


java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JComboTutorial().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JComboBox combo1;
private javax.swing.JComboBox combo2;
// End of variables declaration
}

Sumver http://1bestcsharp.blogspot.co.id/2015/06/java-populate-jcombobox-Depending-Another-
JCombobox-value.html
Project Source Code:

private void jButtonCheckActionPerformed(java.awt.event.ActionEvent evt) {

//Email Like: [email protected] => ^([\w]+)@([\w]+)\.([\w]+)$


//URL Like: http://www.google.com => ^(http://www\.)([\w]+)\.([\w]+)$

// email
Pattern pMail = Pattern.compile("^([\\w]+)@([\\w]+)\\.([\\w]+)$");
Matcher mMail = pMail.matcher(jTextFieldEmail.getText());

boolean isEmailValid = mMail.matches();

//jLabelEmail.setText(Boolean.toString(isEmailValid));

if(isEmailValid){

jLabelEmail.setText("Valid Email");
jLabelEmail.setForeground(Color.BLUE);
}else{
jLabelEmail.setText("InValid Email");
jLabelEmail.setForeground(Color.red);
}

// URL
Pattern pURL = Pattern.compile("^(http://www\\.)([\\w]+)\\.([\\w]+)$");
Matcher mURL = pURL.matcher(jTextFieldURL.getText());

boolean isURLValid = mURL.matches();

//jLabelURL.setText(Boolean.toString(isURLValid));

if(isURLValid){

jLabelURL.setText("Valid URL");
jLabelURL.setForeground(Color.green);
}else{
jLabelURL.setText("InValid URL");
jLabelURL.setForeground(Color.red);
}

OutPut:
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 JComboBox combobox=new JComboBox();


2 combobox.addItem("Agung Setiawan");
3 combobox.addItem("Hauril Maulida Nisfari");
4
5 for(int i=1;i<=10;i++){
6 combobox.addItem(i);
7}

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 mahasiswayang memiliki struktur sebagai berikut:

1 mysql> desc mahasiswa;


2 +-------+-------------+------+-----+---------+-------+
3 | Field | Type | Null | Key | Default | Extra |
4 +-------+-------------+------+-----+---------+-------+
5 | nim | varchar(25) | NO | PRI | NULL | |
6 | nama | varchar(50) | NO | | NULL | |
7 +-------+-------------+------+-----+---------+-------+
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
Driverdan 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 package comboboxdb.model;
2
3 public class Mahasiswa {
4 private String nim;
5 private String nama;
6
7 public String getNim() {
8 return nim;
9 }
10
11 public void setNim(String nim) {
12 this.nim = nim;
13 }
14
15 public String getNama() {
16 return nama;
17 }
18
19 public void setNama(String nama) {
20 this.nama = nama;
21 }
22
23 @Override
24 public String toString(){
25 return nim;
26 }
27 }

Setelah kelas domain model tercipta sekarang saatnya membuat kelas


service pada package comboboxdb.service. Beri
nama MahasiswaService lalu ketikkan kode dibawah ini
1 package comboboxdb.service;
2
3 import comboboxdb.model.Mahasiswa;
4 import java.sql.Connection;
5 import java.sql.PreparedStatement;
6 import java.sql.ResultSet;
7 import java.sql.SQLException;
8 import java.util.ArrayList;
9 import java.util.List;
10
11 public class MahasiswaService {
12
13 Connection connection;
14 PreparedStatement preparedStatement;
15 Mahasiswa mahasiswa;
16 List<Mahasiswa> mahasiswas=new ArrayList<Mahasiswa>();
17
18 public MahasiswaService(Connection connection){
19 this.connection=connection;
20 }
21
22 public List<Mahasiswa> getAllMahasiswa() throws SQLException{
23 preparedStatement=connection.prepareStatement("SELECT * FROM mahasiswa");
24 ResultSet rs=preparedStatement.executeQuery();
25 while(rs.next()){
26 mahasiswa=new Mahasiswa();
27 mahasiswa.setNim(rs.getString("nim"));
28 mahasiswa.setNama(rs.getString("nama"));
29 mahasiswas.add(mahasiswa);
30 }
31 return mahasiswas;
32 }
33 }

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 package comboboxdb.util;
2
3 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
4 import java.sql.Connection;
5 import java.sql.SQLException;
6 import java.util.logging.Level;
7 import java.util.logging.Logger;
8
9 public class Koneksi {
10 MysqlDataSource dataSource=new MysqlDataSource();
11
12 public Koneksi() {
13 dataSource.setUser("root");
14 dataSource.setPassword("root");
15 dataSource.setServerName("localhost");
16 dataSource.setDatabaseName("comboboxdb");
17 }
18
19 public Connection getConnection(){
20 try {
21 return dataSource.getConnection();
22 } catch (SQLException ex) {
23 Logger.getLogger(Koneksi.class.getName()).log(Level.SEVERE, null, ex);
24 }
25 return null;
26 }
27
28 }
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 MahasiswaService mahasiswaService;
2 public FrameMain() throws SQLException {
3 initComponents();
4 this.setLocationRelativeTo(null);
5
6 Koneksi koneksi=new Koneksi();
7 mahasiswaService=new MahasiswaService(koneksi.getConnection());
8 load();
9 jComboBoxMahasiswa.addActionListener(new ComboBoxListener());
10 }
11
12 private void load() throws SQLException{
13
14 jComboBoxMahasiswa.removeAllItems();
15
16 List<Mahasiswa> mahasiswas=mahasiswaService.getAllMahasiswa();
17 for(Mahasiswa mhs:mahasiswas){
18 jComboBoxMahasiswa.addItem(mhs);
19 }
20 }

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 private class ComboBoxListener implements ActionListener{


2
3 @Override
4 public void actionPerformed(ActionEvent e) {
5 Mahasiswa mahasiswa=(Mahasiswa) jComboBoxMahasiswa.getSelectedItem();
6 jTextFieldNama.setText(mahasiswa.getNama());
7 }
8
9 }
10
11 // Variables declaration - do not modify
12 private javax.swing.JButton jButtonTutup;
13 private javax.swing.JComboBox jComboBoxMahasiswa;
14 ...
15 ...

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 mysql> select * from mahasiswa;


2 +-----------+----------------+
3 | nim | nama |
4 +-----------+----------------+
5 | L2F008002 | Agung Setiawan |
6 | L2F008034 | Fakkar Robi |
7 | L2F008098 | Yosua Alvin |
8 | L2F008100 | Yuli Syarif |
9 +-----------+----------------+
10 4 rows in set (0.00 sec)

Jika masih mengalami kesulitan saya persilahkan untuk bertanya langsung


melalui fitur komentar pada artikel ini.

Membatasi Jumlah Karakter Inputan Pada JTextField Java


Diposting oleh Hasrul Adianto | Pada 11.22

Anda bisa memberikan batasan jumlah karakter yang dapat diketik dalam Jtextfield, fungsi pembatasan
karakter ini umumnya ditujukan untuk estetika sistem user input dalam aplikasi.
Untuk menggunakan cara ini, pada jtextfield Netbeans, Klik kanan >> Events >> key >> pilih keyTyped

Masukkan kode berikut ini didalamnya :

1 private void [nama_variabelJtextfield]KeyTyped(java.awt.event.KeyEvent


evt) {
2
//mulai
3
if ( [nama_variabelJtextfield].getText().length() == 7 ) {
4
evt.consume();
5 }

6 //selesai

7 }

Membuat ComboBox yang Saling Terhubung pada Java Swing | ComboBox Java

Pada tutorial yang lalu, saya telah menulis tentang cara menarik data dari
database untuk kemudian dimasukkan sebagai item pada combobox java.
Pada tutorial ini kita akan membuat 2 buah combobox java yang saling
terhubung isinya. Maksudnya seperti ini, misal kita mempunyai 2 buah
combobox. Combobox pertama bernama fakultas sedangkan combobox
kedua bernama jurusan. Ketika item pada combobox fakultas yang dipilih
adalah fakultas teknik maka combobox jurusan akan berisi item jurusan
yang ada di fakultas teknik. Begitu pula jika yang dipilih adalah fakultas mipa
dan ekonomi, combobox jurusan akan menyesuaikan.

Tampilan akhir aplikasi combobox java adalah seperti ini:

gambar aplikasi combobox java yang saling terhubung

Tertarik?
Kalau tertarik mari lanjutkan..
Inti dari aplikasi combobox ini adalah menggunakan ActionListener yang
dipasang pada combobox fakultas. Pada ActionListener inilah nantinya kita
akan membuat kode yang sedemikian rupa sehingga item pada combobox
jurusan menyesuaikan dengan pilihan pada combobox fakultas.
Potongan kodenya adalah sebagai berikut

1 .....

2 //tutorial combobox java

3 private void initComboBox(){

4 FakultasService fakultasService=ComboBoxTerhubung.getFakultasService();

5 List fakultases=fakultasService.getAllFakultas();

6 for(Fakultas fak:fakultases){

7 jComboBoxFakultas.addItem(fak);

8 }

10 jComboBoxFakultas.addActionListener(new ComboBoxListener());

11 }

12

13 .....

14

15 private class ComboBoxListener implements ActionListener{

16

17 @Override

18 public void actionPerformed(ActionEvent e) {

19 Fakultas fakultas=(Fakultas) jComboBoxFakultas.getSelectedItem();


20

21 JurusanService jurusanService=Main.getJurusanService();

22 List jurusans=jurusanService.getJurusanByFakultas(fakultas.getIdFakultas());

23

24 jComboBoxJurusan.removeAllItems();

25 for(Jurusan jurusan:jurusans){

26 jComboBoxJurusan.addItem(jurusan);

27 }

28 }

29

30 }

31

32 .....

Sudah mendapatkan gambaran cara kerjanya?. Kalau belum mari kita


lanjutkan lagi dengan penjelasan yang lebih detail dan kode-kode yang
lengkapnya. Pada tutorial combobox java ini saya
menggunakan Hibernate dan juga plain JDBCdengan maksud biar yang
belum tahu Hibernate juga bisa merasakan manfaat tutorial ini.

Langkah#1 Membuat Project combobox java dan Menambahkan Library


Buat Project dengan nama ComboBoxTerhubung serta buat package-
packagesesuai dengan gambar berikut ini
gambar aplikasi combobox java

Pada node Libraries tambahkan library Hibernate JPA dan MySql JDBC
Driver.

Langkah#2 Membuat Data Source Hibernate


Buatlah file konfigurasi untuk Hibernate pada package default dan beri nama
file konfigurasi tersebut hibernate.cfg.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2 <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"


"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
3
<hibernate-configuration>
4
<session-factory>
5
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
6
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
7
<property
8
name="hibernate.connection.url">jdbc:mysql://localhost:3306/comboboxterhubung?zeroDateTimeBehavior=convertToNull</prope
9 rty>
1 <property name="hibernate.connection.username">root</property>
0
<property name="hibernate.connection.password">root</property>
1
<mapping class="comboboxterhubung.entity.Fakultas"/>
1

<mapping class="comboboxterhubung.entity.Jurusan"/>
1
2
</session-factory>

1
</hibernate-configuration>
3

Setelah konfigurasi Hibernate untuk aplikasi combobox java kita buat,


selanjutnya membuat Class yang digunakan untuk
mendapatkan SessionFactory yang berguna untuk mendapatkan Session.
Objek Session inilah yang berperan penting dalam proses query data pada
Hibernate.
Pada package comboboxterhubung.util buat sebuah Class dengan
nama HibernateUtil. Adapun isinya adalah sebagai berikut:

1 package comboboxterhubung.util;

3 import org.hibernate.cfg.AnnotationConfiguration;

4 import org.hibernate.SessionFactory;

6 public class HibernateUtil {

7
8 private static final SessionFactory sessionFactory;

10 static {

11 try {

12 sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();

13 } catch (Throwable ex) {

14 System.err.println("Initial SessionFactory creation failed." + ex);

15 throw new ExceptionInInitializerError(ex);

16 }

17 }

18

19 public static SessionFactory getSessionFactory() {

20 return sessionFactory;

21 }

22 }

23

24 //tutorial combobox java

Kalau sudah selesai maka saatnya untuk membuat Class entity/domain model
yaitu Class yang merepresentasikan tabel yang ada pada database untuk
aplikasi combobox java ini. Buat dua buah class dengan
nama Fakultas dan Jurusan pada package comboboxterhubung.entity

Class Fakultas
1 package comboboxterhubung.entity;

3 import java.util.ArrayList;

4 import java.util.List;

5 import javax.persistence.Column;

6 import javax.persistence.Entity;

7 import javax.persistence.Id;

8 import javax.persistence.OneToMany;

9 import javax.persistence.Table;

10

11 @Entity

12 @Table(name="fakultas")

13 public class Fakultas {

14 @Id

15 @Column(name="id_fakultas")

16 private String idFakultas;

17

18 @Column(name="nama_fakultas")

19 private String namaFakultas;

20

21 @OneToMany(mappedBy = "fakultas")

22 private List<Jurusan> jurusans=new ArrayList<Jurusan>();


23

24 public String getIdFakultas() {

25 return idFakultas;

26 }

27

28 public void setIdFakultas(String idFakultas) {

29 this.idFakultas = idFakultas;

30 }

31

32 public String getNamaFakultas() {

33 return namaFakultas;

34 }

35

36 public void setNamaFakultas(String namaFakultas) {

37 this.namaFakultas = namaFakultas;

38 }

39

40 public List<Jurusan> getJurusans() {

41 return jurusans;

42 }

43

44 public void setJurusans(List<Jurusan> jurusans) {

45 this.jurusans = jurusans;

46 }

47
48 @Override

49 public String toString() {

50 return namaFakultas;

51 }

52

53

54 }

55

56 //tutorial combobox java

Class Jurusan

1 package comboboxterhubung.entity;

3 import javax.persistence.Column;

4 import javax.persistence.Entity;

5 import javax.persistence.Id;

6 import javax.persistence.JoinColumn;

7 import javax.persistence.ManyToOne;

8 import javax.persistence.Table;

10 @Entity
11 @Table(name="jurusan")

12 public class Jurusan {

13 @Id

14 @Column(name="id_jurusan")

15 private String idJurusan;

16

17 @Column(name="nama_jurusan")

18 private String namaJurusan;

19

20 @JoinColumn(name="id_fakultas")

21 @ManyToOne

22 private Fakultas fakultas;

23

24 public String getIdJurusan() {

25 return idJurusan;

26 }

27

28 public void setIdJurusan(String idJurusan) {

29 this.idJurusan = idJurusan;

30 }

31

32 public String getNamaJurusan() {

33 return namaJurusan;

34 }

35
36 public void setNamaJurusan(String namaJurusan) {

37 this.namaJurusan = namaJurusan;

38 }

39

40 public Fakultas getFakultas() {

41 return fakultas;

42 }

43

44 public void setFakultas(Fakultas fakultas) {

45 this.fakultas = fakultas;

46 }

47

48 @Override

49 public String toString() {

50 return namaJurusan;

51 }

52

53

54 }

55

56 //tutorial combobox java

Langkah#3 Membuat Service


Service pada aplikasi ini digunakan untuk mendapatkan data dari database.
Desain yang baik adalah desain yang memiliki layer/menerapkan layering.
Layering menjadikan aplikasi mudah dimodifikasi karena antar objek yang
satu dengan objek yang lain tidak saling terikat. Tanpa layering kamu akan
langsung menulis kode untuk mengakses database pada UI dengan
menggunakan Jdbc misalnya. Suatu saat aplikasi ingin diubah menjadi
menggunakah Hibernate atau JPA atau yang lain… waah bisa repot nantinya.
Nanti kamu akan melihat bahwa dengan menggunakan layering ini kita bisa
menggunakan Hibernate dengan Jdbc hanya dengan mengganti 1 kata
keren kan

Pada package comboboxterhubung.service buat interface dengan


nama FakultasService. Interface inilah yang membuat layering kita menjadi
fleksibel untuk diubah-ubah implementasinya, dari implementasi Hiberntae ke
implementasi Jdbc dan sebaliknya. Ketikkan kode berikut:

1 package comboboxterhubung.service;

3 import comboboxterhubung.entity.Fakultas;

4 import java.util.List;

6 public interface FakultasService {

7 public List<Fakultas> getAllFakultas();

8 }

10 //tutorial combobox java


Sengaja saya buat simpel dengan hanya ada 1 method untuk mengambil data
seluruh fakultas yang terdapat pada sistem. Selanjutnya kita buat
implementasinya. Seperti sudah saya katakan diatas kita akan menggunakan
2 implementasi. Implementasi pertama adalah menggunakan Hibernate.
Kodenya adalah seperti berikut:

Class FakultasServiceImplHibernate

1 package comboboxterhubung.service;

3 import comboboxterhubung.entity.Fakultas;

4 import comboboxterhubung.util.HibernateUtil;

5 import java.util.List;

6 import org.hibernate.Session;

8 public class FakultasServiceImplHibernate implements FakultasService {

10 @Override

11 public List<Fakultas> getAllFakultas() {

12 Session session=HibernateUtil.getSessionFactory().openSession();

13 return session.createQuery("select f from Fakultas f").list();

14 }

15
16 }

17

18 //tutorial combobox java

Untuk implementasi menggunakan Jdbc menggunakan kode seperti ini:

Class FakultasServiceImplJdbc

1 package comboboxterhubung.service;

3 import comboboxterhubung.entity.Fakultas;

4 import java.sql.Connection;

5 import java.sql.PreparedStatement;

6 import java.sql.ResultSet;

7 import java.sql.SQLException;

8 import java.util.ArrayList;

9 import java.util.List;

10 import java.util.logging.Level;

11 import java.util.logging.Logger;

12

13 public class FakultasServiceImplJdbc implements FakultasService {

14

15 public Connection connection;


16 public PreparedStatement preparedStatement;

17 List<Fakultas> fakultases=new ArrayList<Fakultas>();

18

19 public FakultasServiceImplJdbc(Connection connection){

20 this.connection=connection;

21 }

22

23 @Override

24 public List<Fakultas> getAllFakultas() {

25 try {

26 preparedStatement=connection.prepareStatement("SELECT * FROM fakultas");

27 ResultSet rs=preparedStatement.executeQuery();

28

29 while(rs.next()){

30 Fakultas fakultas=new Fakultas();

31 fakultas.setIdFakultas(rs.getString("id_fakultas"));

32 fakultas.setNamaFakultas(rs.getString("nama_fakultas"));

33 fakultases.add(fakultas);

34 }

35 return fakultases;

36 } catch (SQLException ex) {

37 Logger.getLogger(FakultasServiceImplJdbc.class.getName()).log(Level.SEVERE, null, ex);

38 }

39 return null;

40 }
41 }

42

43 //tutorial combobox java

Service untuk Fakultas sudah selesai dibuat, berarti selanjutnya adalah


membuat Service untuk Jurusan. Sama seperti dalam
pembuatan FakultasService diatas, kita membuat terlebih dahulu sebuah
interface untuk kemudian dibuat implementasinya dalam Hibernate dan Jdbc.
Langsung saja ketik kodenya seperti ini

interface JurusanService

1 package comboboxterhubung.service;

3 import comboboxterhubung.entity.Jurusan;

4 import java.util.List;

6 public interface JurusanService {

7 public List<Jurusan> getJurusanByFakultas(String kodeFakultas);

8 }

10 //tutorial combobox java


Impelementasi menggunakan Hibernate

class JurusanServiceImplHibernate

1 package comboboxterhubung.service;

3 import comboboxterhubung.entity.Jurusan;

4 import comboboxterhubung.util.HibernateUtil;

5 import java.util.List;

6 import org.hibernate.Session;

8 public class JurusanServiceImplHibernate implements JurusanService {

10 @Override

11 public List<Jurusan> getJurusanByFakultas(String kodeFakultas) {

12 Session session=HibernateUtil.getSessionFactory().openSession();

13 return session.createQuery("select j from Jurusan j where j.fakultas.idFakultas=:kodeFakultas")

14 .setParameter("kodeFakultas", kodeFakultas).list();

15 }

16

17 }

18

19 //tutorial combobox java


Impementasi menggunakan Jdbc

1 package comboboxterhubung.service;

3 import comboboxterhubung.entity.Jurusan;

4 import java.sql.Connection;

5 import java.sql.PreparedStatement;

6 import java.sql.ResultSet;

7 import java.sql.SQLException;

8 import java.util.ArrayList;

9 import java.util.List;

10 import java.util.logging.Level;

11 import java.util.logging.Logger;

12

13 public class JurusanServiceImplJdbc implements JurusanService {

14

15 public Connection connection;

16 public PreparedStatement preparedStatement;

17

18

19 public JurusanServiceImplJdbc(Connection connection){

20 this.connection=connection;
21 }

22

23 @Override

24 public List<Jurusan> getJurusanByFakultas(String kodeFakultas) {

25 try {

26 List<Jurusan> jurusans=new ArrayList<Jurusan>();

27 preparedStatement=connection.prepareStatement("SELECT * FROM jurusan where id_fakultas=?");

28 preparedStatement.setString(1, kodeFakultas);

29 ResultSet rs=preparedStatement.executeQuery();

30 while(rs.next()){

31 Jurusan jurusan=new Jurusan();

32 jurusan.setIdJurusan(rs.getString("id_jurusan"));

33 jurusan.setNamaJurusan(rs.getString("nama_jurusan"));

34 jurusans.add(jurusan);

35 }

36 return jurusans;

37 } catch (SQLException ex) {

38 Logger.getLogger(JurusanServiceImplJdbc.class.getName()).log(Level.SEVERE, null, ex);

39 }

40 return null;

41 }

42

43 }

44

45 //tutorial combobox java


Sampai disini maka telah selesai untuk bagian Service pada aplikasi
combobox java ini. Hampir seluruh bagian telah siap tinggal membuat UI dan
memodifiksi Class Main (Class yang terpadat pada
package comboboxterhubung).

langkah#4 Membuat UI dan Class Main


Untuk bentuk tampilannya sesuaikan dengan selera kamu. Kalau punya saya
seperti ini:

beri nama MainFrame dan taruh pada package comboboxterhubung.ui

Sebelum menambahkan method, kita modifikasi terlebih dahulu


Class Mainmenjadi seperti ini:

1 package comboboxterhubung;

3 import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
4 import comboboxterhubung.service.FakultasService;

5 import comboboxterhubung.service.FakultasServiceImplHibernate;

6 import comboboxterhubung.service.FakultasServiceImplJdbc;

7 import comboboxterhubung.service.JurusanService;

8 import comboboxterhubung.service.JurusanServiceImplHibernate;

9 import comboboxterhubung.service.JurusanServiceImplJdbc;

10 import comboboxterhubung.ui.MainFrame;

11 import java.sql.SQLException;

12

13 public class Main {

14

15 public static FakultasService fakultasService;

16 public static JurusanService jurusanService;

17

18 private static boolean JdbcMode= Boolean.TRUE;

19

20 public static FakultasService getFakultasService(){

21 return fakultasService;

22 }

23

24 public static JurusanService getJurusanService(){

25 return jurusanService;

26 }

27

28 public static void main(String[] args) throws SQLException {


29

30 if(!JdbcMode){

31 fakultasService=new FakultasServiceImplHibernate();

32 jurusanService=new JurusanServiceImplHibernate();

33 }

34 else{

35 MysqlDataSource dataSource=new MysqlDataSource();

36 dataSource.setUser("root");

37 dataSource.setPassword("root");

38 dataSource.setDatabaseName("comboboxterhubung");

39 dataSource.setServerName("localhost");

40

41 fakultasService=new FakultasServiceImplJdbc(dataSource.getConnection());

42 jurusanService=new JurusanServiceImplJdbc(dataSource.getConnection());

43 }

44

45

46 new MainFrame().setVisible(true);

47 }

48

49 }

50

51 //tutorial combobox java

Lihat pada bagian ini


1 private static boolean JdbcMode= Boolean.TRUE;

Jika property tersebut bernilai True maka yang akan digunakan adalah
implementasi Jdbc. Sedangkan jika nilainya di set menjadi False maka yang
digunakan adalah implementasi Hibernate.. praktis dan keren kan

Setelah beres maka saatnya untuk menambahkan beberapa method


pada MainFrame. Buta sebuah private class dengan
nama ComboBoxListenerdidalam class MainFrame dan ketikkan kode
berikut

1 ........

2 ........

3 ........

4 private class ComboBoxListener implements ActionListener{

6 @Override

7 public void actionPerformed(ActionEvent e) {

8 Fakultas fakultas=(Fakultas) jComboBoxFakultas.getSelectedItem();


9

10 JurusanService jurusanService=Main.getJurusanService();

11 List<Jurusan> jurusans=jurusanService.getJurusanByFakultas(fakultas.getIdFakultas());

12

13 jComboBoxJurusan.removeAllItems();

14 for(Jurusan jurusan:jurusans){

15 jComboBoxJurusan.addItem(jurusan);

16 }

17 }

18

19 }

20

21

22 private javax.swing.JComboBox jComboBoxFakultas;

23 private javax.swing.JComboBox jComboBoxJurusan;

24 ......

25 ......

26

27 //tutorial combobox java

Buat sebuah private method untuk mengisi data combobox fakultas sekaligus
menambahkan ActionListener ke combobox fakultas
1 private void initComboBox(){

2 FakultasService fakultasService=Main.getFakultasService(); //new FakultasServiceImplHibernate();

3 List<Fakultas> fakultases=fakultasService.getAllFakultas();

4 for(Fakultas fak:fakultases){

5 jComboBoxFakultas.addItem(fak);

6 }

8 jComboBoxFakultas.addActionListener(new ComboBoxListener());

9 }

10

11 //tutorial combobox java

Terkahir memodifikasi constructor menjadi seperti ini

1 public MainFrame() {

2 initComponents();

3 initComboBox();

4}

6 //tutorial combobox java


Selesai
Sekarang jalankan Class Main (jangan Class MainFrame). Seharusnya
aplikasi combobox java yang terhubung berjalan sebagaimana mestinya.

Jika masih ada yang kebingungan memahami tutorial combobox java ini
silahkan berdiskusi pada fitur koemntar yang telah disediakan dibawah ini

Happy Coding

You might also like