Project DemoKoneksiDB02.java
Ahmad Hamidi
Jumat, 15 November 2013
Jumat, 01 November 2013
Contoh Pengulangan Proses Menggunakan Struktur For, While & Do-While.
Loop
atau perulangan adalah suatu bentuk kegiatan mengulang suatu statement
sampai batas yang diinginkan. Dalam pemograman Loop atau perulangan
sangat berguna sekali. Kegunaan sederhana dalam perulangan terlukis
seperti ini: Jika kita ingin menuliskan kata “saya ganteng” sebanyak
seribu kali maka kita harus membuat seribu baris kata “saya ganteng”
dalam kode pemrogaman kita. Tapi dengan adanya perulangan maka kita
hanya cukup menuliskan 5 sampai 7 baris kode saja. Dalam praktek
sebenarnya, tentu saja perulangan sangat membantu sekali. Misal untuk
memuat seluruh isi table dari sebuah database dimana datanya ingin kita
tampilkan.
Loop atau perulangan dalam Java dapat dilakukan dengan 3 teknik:- Perulangan dengan for
for (inisialisasi ekspresi; kondisi loop; ekspresi penambahan){
// pernyataan
}
- Perulangan dengan teknik ini dikontrol oleh tiga bagian yang ada dalam tanda kurung dan masing-masing bagian ini dipisahkan oleh titik-koma. Pada bagian pertama(inisialisasi ekspresi), sebuah variabel akan di deklarasikan sebagai sebuah titik awal dari perulangan, biasanya variable ini mempunyai tipe data integer atau float. Sementara pada bagian kedua disinilah perulangan akan diperiksa apakah masih memenuhi syarat atau tidak, jika masih memenuhi syarat maka statement dibawahnya akan di eksekusi. Sedangkan bagian ketiga adalah bagian dimana jika bagian kedua masih memenuhi syarat maka nilai variabel akan ditambahkan sesuai dengan syarat yang dituliskan. Bagian ketiga ini secara otomatis akan tidak dibaca oleh program jika kondisi pada bagian ke-dua sudah tidak lagi memenuhi syarat, dan perulangan pun menjadi terhenti. Untuk lebih jelasnya perhatikan potongan contoh berikut ini:
for (int i=0; i <=1000; i++){
System.out.println(“Saya Ganteng”);
}
Jika
digambarkan jalannya program akan seperti ini: variable i akan di
inisialisasi pertama kali dan langsung diberi nilai 0, kemudian variable
i tersebut akan diperiksa pada bagian kedua, apakah i lebih kecil atau
sama dengan 1000, jika nilai I pertama kali adalah 0 maka pernyataan
tersebut bernilai benar (true), sehingga bagian ketiga pun di eksekusi
dan kali ini nilai i menjadi sama dengan 1. setelah nilai i bertambah
menjadi 1 maka langkah selanjutnya program akan mengeksekusi baris
pernyataan yang ada didalam tanda kurung, program akan menuliskan ke
layar “Saya Ganteng”. Setelah itu kursor baris akan kembali lagi keatas
ke posisi for lagi, namun inisialisasi variabel dilewatkan dan langsung
ke bagian kedua yaitu memeriksa apakah i <=1000, dan jika masih
memenuhi syarat maka bagian ketiga dan baris statement pun di eksekusi
kembali, demikian seterusnya hinga nilai variabel i sudah menjadi sama
dengan 1001. Jika nilai variabel i sudah tidak lagi memenuhi syarat
bagian kedua maka program akan tidak mengeksekusi bagian ketiga dan
baris statement, dan pada saat ini pula loop atau perulangan akan
berhenti. Jika digambarkan dalam diagram maka seperti inilah perulangan
dengan for itu tergambar :
Perulangan dengan while.
while(ekspresi){
//statement
}
Perulangan
dengan menggunakan teknik while ini sebenarnya adalah suatu bentuk
perulangan yang memodifikasi teknik pencabangan (branching) secara
kasar. Pernyataan yang ada didalam blok perulangan akan dieksekusi
dengan cara memeriksa ekspresi yang ada, sepanjang ekspresi bernilai
true maka statement akan terus di eksekusi. Variabel sebagai kontrol
perulangan bentuk ini diinisialisai di luar blok perulangan ini. Dan
penambahan atau increment nilai variabel berada didalam blok perulangan
ini. Kelebihan perulangan dengan bentuk ini adalah variabel yang
dideklarasikan tidak hanya bertipe integer atau float saja namun bisa
juga bertipe boolean atau string. Perhatikan contoh program perulangan
dengan menggunakan bentuk ini yang memakai variabel bertipe integer
sebagai kontrol perulangannya:
int i=0;
while(i<=10000){
System.out.println(“Saya Ganteng”);
i++;
}
Sepanjang
variable i bernilai lebih kecil sama dengan 1000 maka pernyataan
mencetak ke layar “Saya Ganteng” akan tetap terus di eksekusi. Yang
harus kita perhatikan jika kita menggunakan perulangan dengan teknik ini
adalah bahwa incremental variabel i harus ada, sebab jika tidak yang
terjadi adalah perulangan yang tidak pernah akan berhenti atau
Invinitive Loop.
Kemudian mari kita lihat potongan kode yang variabel kontrolnya tidak menggunakan integer atau float, berikut ini:
boolean ctrl =false;
int i = 0;
while(ctrl==false){
System.out.println(“Saya Ganteng”);
i++;
if(i == 1000){
ctrl = true;
}
}
Perhatikan
pada potongan kode program tersebut. Pernyataan mencetak kelayar “Saya
Ganteng” akan terus dieksekusi selama variabel kontrol perulangan
tersebut masih bernilai false, sementara trigger untuk membuat variable
bernilai true adalah nilai variable i yang harus sampai dengan 1000.
Jika digambarkan dalam diagram maka sketsa perulangan dengan bentuk ini seperti gambar berikut:
- Perulangan dengan do while
do{ //statement }while(ekspresi);
Perulangan dengan bentuk seperti ini adalah perulangan dengan membalikkan logika perulangan dengan teknik while. Dalam perulangan dengan bentuk ini, pernyataan dieksekusi dulu, baru kemudian kondisi variabel kontrol perulangannya diperiksa apakah memenuhi syarat atau tidak. Biar lebih mudah memahaminya mari kita lihat potongan code program berikut ini:int i=0; do{ System.out.println(“Saya Ganteng”); i++; }while(i<=10000);
Variabel kontrol perulangan tetap diinisialisasi diluar blok perulangan dan harus tetap bersifat incremental / bertambah dan letak incrementalnya ada dalam blok perulangan. Secara logika maka diagram yang bisa menggambarkan proses perulangan tersebut adalah:
Demikianlah
pembahasan kita kali ini mengenai Perulangan atau Loop dalam
pemrograman Java. Ada beberapa hal yang bisa kita simpulkan dan kita
catat dalam pembahasan kali ini:
- Dalam perulangan harus ada variable kontrol, dimana variabel tersebut yang bertugas mengontrol perulangan hingga batas apa atau berapa perulangan bisa dilakukan.
- Variable kontrol harus bersifat incremental atau juga bersifat dapat dimodifikasi sehingga perulangan dapat berjalan dengan semestinya.
- Incremental atau modifikasi variabel kontrol berada dalam lingkup perulangan.
Point-point diatas menjadi konsep dasar pengertian kita akan makna Loop atau perulangan dalam bahasa pemrograman.
Contoh Programnya
Java : Menyeleksi Menu MakananPada program “Menyeleksi Menu Makanan” sederhana ini saya menggunakan Scanner untuk mendapakan input dari keyboard, for untuk looping dan switch case untuk menyeleksi.
Program sederhana ini nantinya akan menampilkan pilihan menu makanan yang akan dipesan, juga total harga keseluruhan sesuai pilihan menu makanan yang usr input-kan.
Source Code :
import java.util.Scanner;
*
* @author Anggoro Dhanumurti
*/
public class std3main {
public static void main(String[] args) {
int hargaBatagor = 5000,//inisialisasi variable hargaBatagor
hargaKupTahu = 3500,//inisialisasi variable hargaKupTahu
hargaSpaghetti = 4000,//inisialisasi variable hargaSpaghetti
total = 0;//inisialisasi total ( total harga pemesanan )
String loop,
pilihMenu = "";//inisialisasi variable loop dengan data type String, digunakan untuk inisialisasi saat looping
System.out.println("------------------------------------");
System.out.println("| Menu Makanan |");//daftar menu makanan
System.out.println("------------------------------------");
System.out.println("| 1. Batagor : Rp 5000 |");
System.out.println("| 2. Kupat Tahu : Rp 3500 |");
System.out.println("| 3. Spaghetti : Rp 4000 |");
System.out.println("------------------------------------");
Scanner scan = new Scanner (System.in);//instansiasi classLib sebagai fungsi mendapatkan input dari keyboard
for (loop = "Y"; loop.equals ("Y") || loop.equals ("y");)//sebagai pengulangan sesuai input statement Y/N, akan melakukan pengulangan apabila input yang dimasukkan adalah Y
{
System.out.print("Pilih Menu (1 s/d 3) : ");
int pilihan = scan.nextInt();//input menu yang akan dipesan, sesuai nomor yang sudah ditentukan. inisialisasi pilihan nantinya digunakan untuk proses penyeleksian
switch(pilihan){//penyeleksian menggunakan switch case
case 1://case 1 = apabila usr memilih menu nomor 1
System.out.println("Anda memilih Batagor : Rp 5000");
pilihMenu = "Batagor "+pilihMenu;
total = total + hargaBatagor;//nilai untuk variable total akan dijumlahkan dengan nilai variable hargaBatagor
break;
case 2:
System.out.println("Anda memilih Kupat Tahu : Rp 3500");
pilihMenu = "Kupat Tahu "+pilihMenu;
total = total + hargaKupTahu;//nilai untuk variable total akan dijumlahkan dengan nilai variable hargaKupTahu
break;
case 3:
System.out.println("Anda memilih Spaghetti : Rp 4000");
pilihMenu = "Spaghetti "+pilihMenu;
total = total + hargaSpaghetti;//nilai untuk variable total akan dijumlahkan dengan nilai variable hargaSpaghetti
break;
default:
System.out.println("Sorry, input menu yang anda masukkan tidak sesuai");
}
System.out.print("Ada lagi yg akan dipesan? (Y/N) : ");//sebagai pertanyaan apakah usr akan melakukan looping ( untuk memesan makanan lagi ) atau tidak
loop = scan.next();
}
System.out.println("Menu yang anda pesan adalah : "+pilihMenu);
System.out.println("Terimakasih, total yang harus anda bayar : Rp " +total);
}
}l.php
Sumber
Cara Pemanggilan Field dan Method oleh Object dalam Java
Accessing Private Fields
To access a private field you will need to call theClass.getDeclaredField(String name)
or Class.getDeclaredFields()
method. The methods Class.getField(String name)
and Class.getFields()
methods only return public fields, so they won't work.
Here is a simple example of a class with a private field, and below that the code to access that
field via Java Reflection:public class PrivateObject {
private String privateString = null;
public PrivateObject(String privateString) {
this.privateString = privateString;
}
}
PrivateObject privateObject = new PrivateObject("The Private Value");
Field privateStringField = PrivateObject.class.
getDeclaredField("privateString");
privateStringField.setAccessible(true);
String fieldValue = (String) privateStringField.get(privateObject);
System.out.println("fieldValue = " + fieldValue);
This code example will print out the text "fieldValue = The Private Value", which is the value of the private field
privateString
of the PrivateObject
instance created at the beginning of the code sample.
Notice the use of the method
PrivateObject.class.getDeclaredField("privateString")
.
It is this method call that returns the private field. This method only returns fields declared
in that particular class, not fields declared in any superclasses.
Notice the line in bold too. By calling
Field.setAcessible(true)
you turn
off the access checks for this particular Field
instance, for reflection only.
Now you can access it even if it is private, protected or package scope, even if
the caller is not part of those scopes.
You still can't access the field using normal code. The compiler won't allow it.
Accessing Private Methods
To access a private method you will need to call theClass.getDeclaredMethod(String name, Class[] parameterTypes)
or Class.getDeclaredMethods()
method. The methods Class.getMethod(String name, Class[] parameterTypes)
and Class.getMethods()
methods only return public methods, so they won't work.
Here is a simple example of a class with a private method, and below that the code to access that
method via Java Reflection:
public class PrivateObject {
private String privateString = null;
public PrivateObject(String privateString) {
this.privateString = privateString;
}
private String getPrivateString(){
return this.privateString;
}
}
PrivateObject privateObject = new PrivateObject("The Private Value");
Method privateStringMethod = PrivateObject.class.
getDeclaredMethod("getPrivateString", null);
privateStringMethod.setAccessible(true);
String returnValue = (String)
privateStringMethod.invoke(privateObject, null);
System.out.println("returnValue = " + returnValue);
This code example will print out the text "returnValue = The Private Value", which
is the value returned by the method getPrivateString()
when invoked on
the PrivateObject
instance created at the beginning of the code sample.
Notice the use of the method
PrivateObject.class.getDeclaredMethod("privateString")
.
It is this method call that returns the private method. This method only returns methods declared
in that particular class, not methods declared in any superclasses.
Notice the line in bold too. By calling
Method.setAcessible(true)
you turn
off the access checks for this particular Method
instance, for reflection only.
Now you can access it even if it is private, protected or package scope, even if
the caller is not part of those scopes.
You still can't access the method using normal code. The compiler won't allow it.Sumber
Kamis, 31 Oktober 2013
Class dan Object Sederhana Dalam Java
Pengertian Objek adalah kesatuan entitas (benda) yang merupakan representasi nyata dari sebuah kelas. Sedangkan Kelas
adalah sebuah tipe data abstrak yang merupakan pemodelan dari objek
yang berisi atribut (data) dan tingkah laku (method) yang dimiliki oleh
objek tersebut.
Hubungan antara Kelas dan Objek Pada Java ini bisa dianaloginkan seperti cetakan roti dan roti hasil cetakan itu sendiri. Untuk penamaan Kelas harus diawali dengan huruf besar/kapital. Sebagai contoh perhatikan kode dibawah ini :
Hubungan antara Kelas dan Objek Pada Java ini bisa dianaloginkan seperti cetakan roti dan roti hasil cetakan itu sendiri. Untuk penamaan Kelas harus diawali dengan huruf besar/kapital. Sebagai contoh perhatikan kode dibawah ini :
public calass Mobil{}
Sedangkan untuk contoh pembuatan Objek adalah sebagai berikut :
Mobil xenia = new Mobil();
Bila ada teman-teman yang masih bingung perhatikan ilustrasi berikut ini :
Kita ingin membuat kelas Mobil, yang memiliki objek diantaranya xenia dan avanza. Karena kelas merupakan abstraksi dan objek, maka pemilihan atribuat haruslah yang dapat merepresentasikan objek secara umum. Beberapa atribut yang digunakan, yaitu nama mobil dan warna yang bertipe string serta kapasitas BBM dan penumpang yang bertipe integer. Setelah atribut didefinisikan, sekarang kita dapat menentukan method yang dimiliki oleh kelas tersebut diantaranya method untuk mengeset data, mengambil data, dan menampilkan data.
Isi dari kelas ada tiga bagian yaitu :
- Variabel/properti/atribut
Atribut adalah karateristik yang dimiliki oleh objek. Dibagian itu kita dapat mendeklarasikan atribut-atribut yang dibutuhkan kelas untuk membentuk objek.
Sebagai contoh perhatikan kode dibawah ini :
private String nama; - Konstruktor
Konstruktor adalah method yang berfungsi untuk menginisialisasi variabel-variabel instans yang akan dimiliki oleh objek. Method konstruktor harus memiliki nama yang sama dengan nama kelas. Konstruktor ini dipanggil pada saat proses instalasi kelas menjadi objek.
Kegunaan konstruktor :
- Mengalokasikan ruang bagi sebuah kelas dalam objek.
- Memberikan nilai awal terhadap anggota data suatu objek.
- Membentuk tugas-tugas umum lainya.
Perlu diketahui :
- Konstruktor tidak mempunyai nilai balik(bahkan tanpa void)
- Konstruktor harus diletakkan pada bagian public. Sebagai contoh perhatikan kode dibawah ini :
public Mobil(){} - Method
Method merupakan tingkahlaku yang dimiliki oleh objek. Method ini bisa berbentuk prosedur maupun fungsi. Contoh penulisannya perhatikan kode dibawah ini :
public void cetakInfo()
{
System.out.println("Nama Mobil : " + getNama() );
}
Contoh program Kelas dan Objek Pada Java :
Mobil.java
package kelasdanobjek;
public class Mobil {
private String nama;
private int kapasitasBBM;
private int kapasitasPenumpang;
private String warna;
public Mobil() {
}
public Mobil(String _nama, int _bbm, int _penumpang, String _warna)
{
setNama(_nama);
setKapasitasBBM(_bbm);
setKapasitasPenumpang(_penumpang);
setWarna(_warna);
}
public void setNama(String nama) {
this.nama = nama;
}
public void setKapasitasBBM(int kapasitasBBM) {
this.kapasitasBBM = kapasitasBBM;
}
public void setKapasitasPenumpang(int kapasitasPenumpang) {
this.kapasitasPenumpang = kapasitasPenumpang;
}
public void setWarna(String warna) {
this.warna = warna;
}
public String getNama() {
return nama;
}
public int getKapasitasBBM() {
return kapasitasBBM;
}
public int getKapasitasPenumpang() {
return kapasitasPenumpang;
}
public String getWarna() {
return warna;
}
public void cetakInfor()
{
System.out.println("Nama Mobil :"+getNama());
System.out.println("Kapasitas BBM :"+getKapasitasBBM());
System.out.println("Kapasitas Penumpang :"+getKapasitasPenumpang());
System.out.println("Warna :"+getWarna());
System.out.println("");
}
}
Main.java
package kelasdanobjek;
public class Main {
/** Creates a new instance of Main */
public Main() {
}
public static void main(String[] args)
{
Mobil m = new Mobil("Kijang",250,8,"Merah");
Mobil n = new Mobil("Panter",250,10,"Biru");
m.cetakInfor();
n.cetakInfor();
}
}
Mungkin hanya ini yang bisa saya sampaikan mengenai Kelas dan Objek Pada Java ini. Semoga postingan Kelas dan Objek Pada Java dapat berguna untuk teman-teman yang ingin belajar java.
Kamis, 17 Oktober 2013
Membuat Aplikasi Sederhana CRUD dengan Java Netbeans dan Database Mysql
Jika kamu mengambil kuliah jurusan IT atau Teknik Informatika yang sedang belajar pemograman java dan mendapatkan tugas untuk membuat Program Aplikasi sederhana dengan koneksi Database menggunakan Mysql berarti kamu masuk ke Blog yang tepat. Kali ini saya akan membahas mengenai cara membuat aplikasi sederhana yang dapat menjalankan menu Create, Read, Update dan Delete (CRUD).
Pertama buatlah sebuah database bernama “DataBase” atau terserah anda, kemudian buatlah sebuah tabel atau entitas bernama “Mahasiswa” (ingat tabel harus mempunyai sebuah primary key) yang memiliki atribut : Nama, NRP, Tanggal Lahir, dan Alamat.
Pertama buatlah sebuah database bernama “DataBase” atau terserah anda, kemudian buatlah sebuah tabel atau entitas bernama “Mahasiswa” (ingat tabel harus mempunyai sebuah primary key) yang memiliki atribut : Nama, NRP, Tanggal Lahir, dan Alamat.
Membuat Project
Kemudian kita mulai membuat project Java Aplication di Netbeans, caranya: File -> New Project, lalu pada bagian Categories pilih Java dan bagian Project pilih Java Application. Beri nama project ini “Aplikasi”.
Tahap selanjutnya kita akan membuat entity class dimana class ini bertujuan untuk mempresentasikan entity atau tabel dalam suatu database. Class ini dibuat lewat file -> new file, pada categories pilih Persistence selanjutnya pilih entity classes from databas.
Jendela berikutnya pada database connection pilih new database connection kemudian next. Kemudian isi sesuai gambar dibawah ini.
Klik ok, akan muncul jendela berikutnya dan klik button Add All kemudian next. Akan muncul jendela berikutnya dan klik button creat persistence unit, ok, kemudian next. Pada collection pilih java.util.List dan klik button finish.
Berikutnya kita akan membuat class persistenceUtility sebagai utilities yang membuat koneksi JPA atau EntityManagerFactory :
package aplikasi;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class persistenceUtility {
public final static EntityManagerFactory entityManagerFactory;
static {
// parameter harus sama dengan nama Persistence Unit
// yang ada pada file persistence.xml
entityManagerFactory =
Persistence.createEntityManagerFactory("AplikasiPU");
}
public static EntityManagerFactory getEntityManagerFactory() {
return entityManagerFactory;
}
}
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class persistenceUtility {
public final static EntityManagerFactory entityManagerFactory;
static {
// parameter harus sama dengan nama Persistence Unit
// yang ada pada file persistence.xml
entityManagerFactory =
Persistence.createEntityManagerFactory("AplikasiPU");
}
public static EntityManagerFactory getEntityManagerFactory() {
return entityManagerFactory;
}
}
Selanjutnya kita akan membuat tampilan dari aplikasi database ini,,
Pada combobox cari berdasarkan, ubahlah model pada property combobox yang sebelumnya dengan nama dan nrp, dengan cara klik kanan pada combobox, kemudian pada model yang sebelumnya berisikan item 1, item 2, item 3, item 4 ubah menjadi nama, nrp.
Kemudian ubahlah nama-nama komponen atau variabel seperti dibawah ini :
Karena kita memakai Tabel sebagai antar mukanya, maka kita harus membuat sebuah TableModel untuk mempermudah dalam menambah data dang mengambil data dari tabel. Buatlah class baru bernama TableModel :
package aplikasi;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List list = new ArrayList();
public void updateAll(Collection mhs) {
list.clear();
list.addAll(mhs);
fireTableDataChanged();
}
public Mahasiswa get(int index){
return list.get(index);
}
public void setData(List list) {
this.list = list;
// memberi peringatan ke tabel bahwa data berubah
fireTableDataChanged();
}
public void insert(Mahasiswa mhs) {list.add(mhs);
fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
}
public void delete(int index) {
list.remove(index);
fireTableRowsDeleted(index, index);
}
public void update(int index,
Mahasiswa mhs) {list.set(index, mhs);
fireTableRowsUpdated(index, index);
}
public Mahasiswa select(int index) {
return list.get(index);
}
public int getRowCount() {
return list.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return list.get(rowIndex).getNama();
case 1:
return list.get(rowIndex).getNrp();
case 2:
return list.get(rowIndex).getTanggalLahir();
case 3:
return list.get(rowIndex).getAlamat();
default:
return null;
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Nama";
case 1:
return "NRP";
case 2:
return "Tanggal lahir";
case 3:
return "Alamat";
default:
return null;
}
}
}
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class TableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private List list = new ArrayList();
public void updateAll(Collection mhs) {
list.clear();
list.addAll(mhs);
fireTableDataChanged();
}
public Mahasiswa get(int index){
return list.get(index);
}
public void setData(List list) {
this.list = list;
// memberi peringatan ke tabel bahwa data berubah
fireTableDataChanged();
}
public void insert(Mahasiswa mhs) {list.add(mhs);
fireTableRowsInserted(getRowCount() - 1, getRowCount() - 1);
}
public void delete(int index) {
list.remove(index);
fireTableRowsDeleted(index, index);
}
public void update(int index,
Mahasiswa mhs) {list.set(index, mhs);
fireTableRowsUpdated(index, index);
}
public Mahasiswa select(int index) {
return list.get(index);
}
public int getRowCount() {
return list.size();
}
public int getColumnCount() {
return 4;
}
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return list.get(rowIndex).getNama();
case 1:
return list.get(rowIndex).getNrp();
case 2:
return list.get(rowIndex).getTanggalLahir();
case 3:
return list.get(rowIndex).getAlamat();
default:
return null;
}
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "Nama";
case 1:
return "NRP";
case 2:
return "Tanggal lahir";
case 3:
return "Alamat";
default:
return null;
}
}
}
Selanjutnya kita tambahkan TableModel ke tampilan antarmuka, carannya masuk ke bagian source kemudian ubah konstruktor yang sebelunnya :
public View() {
initComponents();
}
initComponents();
}
Menjadi :
public View() {
initComponents();
tableModel = new TableModel();
Tabel.setModel(tableModel);
}
initComponents();
tableModel = new TableModel();
Tabel.setModel(tableModel);
}
Berikutnya tambahan getter untuk semua komponen pada source antarmuka, ini berguna untuk controler yang akan buat selanjutnya.
public View() {
initComponents();
tableModel = new TableModel();
Tabel.setModel(tableModel);
}
public JButton getButtonDelete() {
return Hapus;
}
public JButton getButtonInsert() {
return Tambah;
}
public JButton getButtonUpdate() {
return Edit;
}
public TableModel getTableModel() {
return tableModel;
}
public JTable getTable() {
return Tabel;
}
public JTextField getTextNama() {
return txtNama;
}
public JTextField getTextNrp() {
return txtNrp;
}
public JSpinner getTanggal() {
return Tanggal;
}
public JTextArea getAlmt() {
return Alamat;
}
initComponents();
tableModel = new TableModel();
Tabel.setModel(tableModel);
}
public JButton getButtonDelete() {
return Hapus;
}
public JButton getButtonInsert() {
return Tambah;
}
public JButton getButtonUpdate() {
return Edit;
}
public TableModel getTableModel() {
return tableModel;
}
public JTable getTable() {
return Tabel;
}
public JTextField getTextNama() {
return txtNama;
}
public JTextField getTextNrp() {
return txtNrp;
}
public JSpinner getTanggal() {
return Tanggal;
}
public JTextArea getAlmt() {
return Alamat;
}
Selanjutnya kita akan membuat class Controler. Class ini bertugas untuk melakukan semua proses manipulasi database. Biasanya Controller menyesuaikan dengan View, misal disini View memiliki tombol INSERT, UPDATE dan DELETE, artinya Controller harus dapat menangani masalah INSERT, UPDATE dan DELETE tersebut. Biasanya Controller menyesuaikan dengan View, misal disini View memiliki tombol INSERT, UPDATE dan DELETE, artinya Controller harus dapat menangani masalah INSERT, UPDATE dan DELETE tersebut. Apa hanya itu? TIDAK! Terdapat sebuah tabel pada View yang sebelumnya kita buat, dan yang jadi pertanyaan bagaimana data yang ada dalam database bisa terlihat di table? Artinya kita harus membuat si Controller dapat menangani proses SELECT.
package aplikasi;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.swing.JOptionPane;
public class Controler {
private View view;
public Controler(View view) {
this.view = view;
}
public void insert() {
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
manager.getTransaction().begin();
try {
// buat mahasiswa
Mahasiswa mhs = new Mahasiswa();
// ubah data mahasiswa
mhs.setNama(view.getTextNama().getText());
mhs.setNrp(view.getTextNrp().getText());
mhs.setTanggalLahir( (Date) view.getTanggal().getValue());
mhs.setAlamat(( view.getAlmt().getText()));
// simpan ke database
manager.persist(mhs);
// simpah ke tablemodel
view.getTableModel().insert(mhs);
manager.getTransaction().commit();
} catch (Throwable t) {
t.printStackTrace();
manager.getTransaction().rollback();
} finally {
manager.close();
}
}
public void update() {
// dapatkan baris yang terseleksi
int index = view.getTable().getSelectedRow();
// jika tidak ada
if (index == -1) {
// maka proses dibatalkan
JOptionPane.showMessageDialog(null, "Pilih baris yang akan di-update!");
return;
}
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
manager.getTransaction().begin();
try {
// mendapatkan mahasiswa dari tablemodel
Mahasiswa mhs = view.getTableModel().select(index);
// ubah data mahasiswa
mhs.setNama(view.getTextNama().getText());
mhs.setNrp(view.getTextNrp().getText());
mhs.setTanggalLahir((Date) view.getTanggal().getValue());
mhs.setAlamat(( view.getAlmt().getText()));
// update mahasiswa ke database
manager.merge(mhs);
// update mahasiswa ke tablemodel
view.getTableModel().update(index, mhs);
manager.getTransaction().commit();
} catch (Throwable t) {
t.printStackTrace();
manager.getTransaction().rollback();
} finally {
manager.close();
}
}
public void delete() {
// dapatkan baris yang terseleksi
int index = view.getTable().getSelectedRow();
// jika tidak ada
if (index == -1) {
JOptionPane.showMessageDialog(null, "Pilih baris yang akan di-delete!");
return;// maka proses dibatalkan
}
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
manager.getTransaction().begin();
try {
// mendapatkan mahasiswa dari tablemodel
Mahasiswa mhs = view.getTableModel().select(index);
// menghapus mahasiswa dari database
manager.remove(manager.merge(mhs));
// menghapus mahasiswa dari tablemodel
view.getTableModel().delete(index);
manager.getTransaction().commit();
} catch (Throwable t) {
t.printStackTrace();
manager.getTransaction().rollback();
} finally {
manager.close();
}
}
public void select() {
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
try {
@SuppressWarnings("unchecked")
List list = manager.createQuery
("select a from Mahasiswa a order by a.nrp").getResultList();
view.getTableModel().updateAll(list);
} finally {
manager.close();
}
}
}
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.swing.JOptionPane;
public class Controler {
private View view;
public Controler(View view) {
this.view = view;
}
public void insert() {
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
manager.getTransaction().begin();
try {
// buat mahasiswa
Mahasiswa mhs = new Mahasiswa();
// ubah data mahasiswa
mhs.setNama(view.getTextNama().getText());
mhs.setNrp(view.getTextNrp().getText());
mhs.setTanggalLahir( (Date) view.getTanggal().getValue());
mhs.setAlamat(( view.getAlmt().getText()));
// simpan ke database
manager.persist(mhs);
// simpah ke tablemodel
view.getTableModel().insert(mhs);
manager.getTransaction().commit();
} catch (Throwable t) {
t.printStackTrace();
manager.getTransaction().rollback();
} finally {
manager.close();
}
}
public void update() {
// dapatkan baris yang terseleksi
int index = view.getTable().getSelectedRow();
// jika tidak ada
if (index == -1) {
// maka proses dibatalkan
JOptionPane.showMessageDialog(null, "Pilih baris yang akan di-update!");
return;
}
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
manager.getTransaction().begin();
try {
// mendapatkan mahasiswa dari tablemodel
Mahasiswa mhs = view.getTableModel().select(index);
// ubah data mahasiswa
mhs.setNama(view.getTextNama().getText());
mhs.setNrp(view.getTextNrp().getText());
mhs.setTanggalLahir((Date) view.getTanggal().getValue());
mhs.setAlamat(( view.getAlmt().getText()));
// update mahasiswa ke database
manager.merge(mhs);
// update mahasiswa ke tablemodel
view.getTableModel().update(index, mhs);
manager.getTransaction().commit();
} catch (Throwable t) {
t.printStackTrace();
manager.getTransaction().rollback();
} finally {
manager.close();
}
}
public void delete() {
// dapatkan baris yang terseleksi
int index = view.getTable().getSelectedRow();
// jika tidak ada
if (index == -1) {
JOptionPane.showMessageDialog(null, "Pilih baris yang akan di-delete!");
return;// maka proses dibatalkan
}
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
manager.getTransaction().begin();
try {
// mendapatkan mahasiswa dari tablemodel
Mahasiswa mhs = view.getTableModel().select(index);
// menghapus mahasiswa dari database
manager.remove(manager.merge(mhs));
// menghapus mahasiswa dari tablemodel
view.getTableModel().delete(index);
manager.getTransaction().commit();
} catch (Throwable t) {
t.printStackTrace();
manager.getTransaction().rollback();
} finally {
manager.close();
}
}
public void select() {
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
try {
@SuppressWarnings("unchecked")
List list = manager.createQuery
("select a from Mahasiswa a order by a.nrp").getResultList();
view.getTableModel().updateAll(list);
} finally {
manager.close();
}
}
}
Untuk tahap berikutnya kita akan menambahkan aksi tombol Tambah, Hapus, Edit, dan Refresh. Dengan cara double klik tombol tersebut kemudian isikan kode beriut :
Tambah :
private void TambahActionPerformed(java.awt.event.ActionEvent evt) {
if(txtNama.getText().equals("") ||
txtNrp.getText().equals("") || Alamat.getText().equals("") ){
JOptionPane.showMessageDialog(null, "Data harus diisi dengan lengkap!");
return;
}
controler.insert();
txtNama.setText("");
txtNrp.setText("");
Alamat.setText("");
}
if(txtNama.getText().equals("") ||
txtNrp.getText().equals("") || Alamat.getText().equals("") ){
JOptionPane.showMessageDialog(null, "Data harus diisi dengan lengkap!");
return;
}
controler.insert();
txtNama.setText("");
txtNrp.setText("");
Alamat.setText("");
}
Hapus :
private void HapusActionPerformed(java.awt.event.ActionEvent evt) {
if (JOptionPane.showConfirmDialog
(this, "Anda Yakin Akan Menghapus Data Mahasiswa?",
"Hapus Mahasiwa", JOptionPane.OK_CANCEL_OPTION) ==
JOptionPane.CANCEL_OPTION) {
// batalkan aksi hapus
return;
}
controler.delete();
txtNama.setText("");
txtNrp.setText("");
Alamat.setText("");
}
if (JOptionPane.showConfirmDialog
(this, "Anda Yakin Akan Menghapus Data Mahasiswa?",
"Hapus Mahasiwa", JOptionPane.OK_CANCEL_OPTION) ==
JOptionPane.CANCEL_OPTION) {
// batalkan aksi hapus
return;
}
controler.delete();
txtNama.setText("");
txtNrp.setText("");
Alamat.setText("");
}
Edit :
private void EditActionPerformed(java.awt.event.ActionEvent evt) {
if(txtNama.getText().equals("") || txtNrp.getText().equals("") ||
Alamat.getText().equals("") ){
JOptionPane.showMessageDialog(null,"Data harus diisi dengan lengkap!");
return;
}
controler.update();
txtNama.setText("");
txtNrp.setText("");
Alamat.setText("");
}
if(txtNama.getText().equals("") || txtNrp.getText().equals("") ||
Alamat.getText().equals("") ){
JOptionPane.showMessageDialog(null,"Data harus diisi dengan lengkap!");
return;
}
controler.update();
txtNama.setText("");
txtNrp.setText("");
Alamat.setText("");
}
Refresh :
private void refreshActionPerformed(java.awt.event.ActionEvent evt) {
controler.select();
}
controler.select();
}
Dan terakhir tambahkan aksi tombol Cari, dengan cara yang sama dan isikan kode berikut :
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
try {
List list = manager.createQuery
("select b from Mahasiswa b where " + "b." +
(String)cmbCari.getSelectedItem()+ " like '%" +
txtCari.getText() + "%'").getResultList();
// tampilkan hasil pencarian ke table
tableModel.setData((List) list);
} catch (Throwable t) {
// perlihatkan error
t.printStackTrace();
} finally {
// tutup entitymanager
manager.close();
}
}
EntityManager manager =
PersistenceUtility.getEntityManagerFactory().createEntityManager();
try {
List list = manager.createQuery
("select b from Mahasiswa b where " + "b." +
(String)cmbCari.getSelectedItem()+ " like '%" +
txtCari.getText() + "%'").getResultList();
// tampilkan hasil pencarian ke table
tableModel.setData((List) list);
} catch (Throwable t) {
// perlihatkan error
t.printStackTrace();
} finally {
// tutup entitymanager
manager.close();
}
}
Sampai disini sebenarnya program kita sudah jadi, tapi untuk membuat tabel pada program kita lebih interaktif maka tambahkan kode berikut pada konstruktor view atau tampilan antar mua program sehingga kontraktornya menjadi :
public View() {
initComponents();
tableModel = new TableModel();
Tabel.setModel(tableModel);
controler = new Controler(this);
//menampilkan data mahasiswa ketika program pertama kali dijalankan
refreshActionPerformed(null);
Tabel.getSelectionModel().addListSelectionListener
(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
// dapatkan baris yang terseleksi
int baris = Tabel.getSelectedRow();
// cek apakah baris terseleksi
if (baris != -1) {
// jika terseleksi, tampilkan data di form
// dapatkan mahasiswa dari tabel
Mahasiswa mhs = tableModel.get(baris);
// tampilkan data di form
txtNama.setText(mhs.getNama());
txtNrp.setText(mhs.getNrp());
Tanggal.setValue(mhs.getTanggalLahir());
Alamat.setText(mhs.getAlamat());
}
}
});
}
initComponents();
tableModel = new TableModel();
Tabel.setModel(tableModel);
controler = new Controler(this);
//menampilkan data mahasiswa ketika program pertama kali dijalankan
refreshActionPerformed(null);
Tabel.getSelectionModel().addListSelectionListener
(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
// dapatkan baris yang terseleksi
int baris = Tabel.getSelectedRow();
// cek apakah baris terseleksi
if (baris != -1) {
// jika terseleksi, tampilkan data di form
// dapatkan mahasiswa dari tabel
Mahasiswa mhs = tableModel.get(baris);
// tampilkan data di form
txtNama.setText(mhs.getNama());
txtNrp.setText(mhs.getNrp());
Tanggal.setValue(mhs.getTanggalLahir());
Alamat.setText(mhs.getAlamat());
}
}
});
}
Akhirnya progam database sederhana telah selesai,,, kita tinggal menambahkan driver MySQL ke dalam project. Caranya klik kanan pada libraries project kita kemudian pilih Add Library, selanjutnya pilih My SQL JDBC Driver. Dan program database sederhana siap dijalankan… Selamat mencoba......!!
Langganan:
Postingan (Atom)