• Tidak ada hasil yang ditemukan

PBO LANJUT TUTORIAL JPA & SWING MENGGUNAKAN NETBEANS. Niko Ibrahim, MIT

N/A
N/A
Protected

Academic year: 2021

Membagikan "PBO LANJUT TUTORIAL JPA & SWING MENGGUNAKAN NETBEANS. Niko Ibrahim, MIT"

Copied!
43
0
0

Teks penuh

(1)

PBO LANJUT

TUTORIAL JPA & SWING

MENGGUNAKAN NETBEANS

(2)

Persiapan

1. Install NetBeans 6

 Tutorial ini dibuat dengan menggunakan NetBeans

 Silahkan install terlebih dahulu di komputer yang Anda gunakan.

2. Nama Project: JPA_SWING_DEMO 3. Database: MySQL

1. Nama Database: swingerp 2. Username: root

3. Password: (kosong)

Estimasi waktu pengerjaan: 90 menit

Apabila telah selesai

segera tunjukkan

(3)

1a. Buat MySQL Database & Table

 Nama database: swingerp

 Username: root  Password: (empty)

 Buatlah 1 tabel berdasarkan model relasional berikut

Nama tabel: customer

 Kolom:

idCustomer: varchar(20)  namaCustomer: varchar(45)  alamatCustomer: varchar(45)  kotaCustomer: varchar(45)

(4)

1b. Koneksi Database di NetBeans

Pada bagian Services, buat koneksi baru:

Klik kanan MySQL

(5)

1c. Isikan URL pada koneksi tsb

 URL: jdbc:mysql://localhost:3306/swingerp  User name: root

(6)

1d. Mengeksekusi SQL command

 Klik folder Tables untuk melihat tabel yang telah dibuat.

 Klik kanan folder Tables, lalu pilih “Execute Command…”  Ketikan 2 perintah insert berikut dan klik tombol “execute”

insert into customer values ('111','John Doe','Jl. Jakarta 1', 'Jakarta'); insert into customer values ('222','John Smith','Jl. Bandung 1', 'Bandung');

(7)

1e. Tambahkan Driver MySQL & TopLink

Tambahkan driver .jar MySQL ke dalam Library

project.

 Browse di drive C

 Nama file (biasanya):

“mysql-connector-java-5.0.7-bin.jar”

CARA LAIN

: klik “Add Library”, tambahkan “MySQL

Driver”

(8)

2a. Buat Project: Java Application

(9)

2b. Nama project: JPA_SWING_DEMO

(10)

3a. Buat MDI Application

Klik kanan “Source Package”

Pilih New

Other…

(11)

3b. Buat MDI Application

 Pilih “Swing GUI Forms”

(12)

3c. Beri nama dan package

 Class Name: MainWindow  Package: jpa_swing

(13)

3d. Hasil

(14)

4a. Tambahkan Internal Frame

 Klik “Internal Frame” pada palette

 Drag & Drop ke dalam MainWindow

 Resize (perbesar) ukuran “Internal Frame” tsb

(15)

4b. Ubah Properties dari Internal Frame

 Pada bagian property, ubah field berikut:  closeable  true (beri tanda check)

 defaultCloseOperation  HIDE  title  Data Customer

 visible  false

 Rename nama variabel internal frame tsb menjadi:

(16)

5a. Tambahkan:

Menu “Data” & Menu Item “Customer”

 Klik “Menu” pada palette.

 Drag & drop ke sebelah menu “Edit”  Rename menu tersebut: “Data”

 Drag & drop sebuah “Menu Item” kepada menu “Data”  Rename menu item tersebut: “Customer”

(17)

5b. Beri Event-Handling kepada Menu Item

Klik kanan menu item “Customer”

Pilih Events

Action

actionPerformed

Di dalam method actionPerformed tsb, ketikkan:

(18)

RUN PROGRAM

(19)

6a. Dekorasi Customer Frame

(20)

6b. Tambahkan JTable

 Drag & drop sebuah JTable ke dalam customerFrame  Rename JTable: “customerJTable”

(21)

7a. Membuat Entity Class

 Pada “Source Package”, klik kanan, pilih NEW  Pilih “Entity Classes from Database…”

Note: kalau tidak ada pilihannya, cari di bagian “Other…”

(22)

7b. Entity Classes

 Pada Database Connection, pilih: swingerp

 Pindahkan semua tabel ke window kanan. Klik Next 2x.  Klik Finish.

(23)

7c. Entity Classes generated…

 NetBeans secara otomatis membuatkan:

 Entity classes (file java) untuk semua tabel dan relasi yang ada.  Persistence unit (file xml)

 Klik kanan package “jpa_swing”, klik “Compile Package”

Buka file “Customer.java” untuk melihat variabel, access methods

(24)

8a. Membuat EntityManager

 Sekarang Anda akan membuat:  EntityManager

 customerQuery (“select b from barang b”)  customerList

 Anda bisa membuat satu per satu dari palette

 Tapi, NetBeans dapat membuatkannya secara otomatis untuk

Anda dengan cara drag&drop table ke dalam JTable (lihat slide berikutnya)

(25)

8b. Drag & Drop table “Customer”

 Drag & drop table “customer” ke dalam “customerJTable”

 NetBeans secara otomatis akan membuatkan 3 objek berikut:

 Rename “swingerpPUEntityManager” menjadi “entityManger”

 Klik kanan setiap objek tsb, pilih property untuk melihat hubungan di antara ketiga

(26)
(27)

9a. Tambahkan Dekorasi pada

customerInternalFrame

Tambahkan satu JPanel di bawah customerJTable

Tambahkan 4 label & 4 text field

Tambahkan 4 button

Ubah nama variabel

sebagai berikut:

JTextField:

idTF, namaTF, alamatTF, kotaTF

JButton:

tambahButton, hapusButton, refreshButton,

saveButton dan tutupButton

Ubah

property Enable

false (uncheck), untuk

(28)

9b. Hasil Dekorasi

(29)

10a. Binding JTextField

JTable

 Kita akan lakukan binding setiap JTextField dengan suatu nilai

yang ada di JTable.

(30)

10b. Bind “idTF.text”

 Pilih Binding Source “customerJTable”  Pilih Binding Expression: “idCustomer”

 Klik OK

(31)

RUN PROJECT

 Run project

 Pilihlah baris pada tabel, sambil memperhatikan perubahan

nilai pada textfield.

(32)

11. Membuat List menjadi Observable

Pada menu Inspector, pilih objek “customerList”

Pada property customerList, beri tanda check pada

field “Observable”

Dengan men-set “Observable”, data (list) & view (cell

JTable) akan dapat otomatis bertambah secara

bersamaan.

(33)

12a. Tambahkan import

Tambahkan dua perintah import berikut:

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

(34)

12b. Customize Code: consctructor

Editlah custructor

MainWindow

() sbb:

public MainWindow() { initComponents();

this.setLocationRelativeTo(null);

TableSelectionListener listener = new TableSelectionListener();

customerJTable.getSelectionModel().addListSelectionListener(listener); entityManager.getTransaction().begin();

(35)

12c. Tambahkan class

TableSelectionListner

Tambahkan kode berikut setelah constructor (di luar) tadi:

private class TableSelectionListener implements ListSelectionListener { public void valueChanged(ListSelectionEvent e) {

if (e.getSource() == customerJTable.getSelectionModel()) {

boolean enabled = (customerJTable.getSelectedRow() != -1); hapusButton.setEnabled(enabled);

saveButton.setEnabled(enabled); }

} }

(36)

12d. Tambahkan method

“tambahCustomerBaru”

Tambahkan kode berikut setelah class (12c) tadi: private void tambahCustomerBaru() {

Customer c = new Customer(); entityManager.persist(c);

customerList.add(c);

//System.out.println(customerList.size()); int row = customerList.size() - 1;

customerJTable.setRowSelectionInterval(row, row);

customerJTable.scrollRectToVisible(customerJTable.getCellRect(row, 0, true)); saveButton.setEnabled(true);

(37)

Event-Handling

tambahButton

hapusButton

refreshButton

saveButton

tutupButton

(38)

13a. Beri event untuk

tambahButton

Ketikan kode berikut di dalam method “tambahButtonActionPerformed”:

(39)

13b. Event untuk

hapusButton

int[] selected = customerJTable.getSelectedRows();

List<Customer> toRemove = new ArrayList<Customer>(selected.length); for (int idx = 0; idx < selected.length; idx++) {

Customer c = customerList.get(customerJTable.convertRowIndexToModel(selected[idx])); toRemove.add(c); entityManager.remove(c); } customerList.removeAll(toRemove); saveButton.setEnabled(true);

(40)

13c. Event untuk

refreshButton

entityManager.getTransaction().rollback(); entityManager.getTransaction().begin(); customerList.clear();

(41)

13d. Event untuk

saveButton

try {

entityManager.getTransaction().commit(); // Akan error kalau ID Customer tidak diisi saveButton.setEnabled(false);

} catch (java.lang.Exception e) {

// Kalau ID Customer tidak diisi, maka akan masuk ke sini: System.out.println("ERRORNYA ADALAH:");

System.out.println(e.getMessage()); System.out.println("Akhir pesan eror");

// Sekarang, kita lanjutkan penambahan customer yang diinginkan: customerList.clear(); customerList.addAll(customerQuery.getResultList()); tambahCustomerBaru(); } finally { entityManager.getTransaction().begin(); }

(42)

13e. Event untuk

tutupButton

(43)

Run Project

 Program pengolahan “Data Customer” telah selesai.  Silahkan menambah atau menghapus data pada tabel.  Tekan tombol save untuk melakukan commit.

Selamat Mengerjakan! Niko Ibrahim, MIT

Referensi

Dokumen terkait

Buku catatan penggunan keuangan penelitian merupakan buku keuangan atau catatan penggunaan keuangan yang dilakukan oleh peneliti pada setiap kegiatan

Kampanye jalur sepeda di Jakarta ini memposisikan dirinya sebagai kampanye jalur sepeda yang dapat memberikan informasi secara lengkap tentang jalur sepeda dan

Pada penelitian ini, desain penelitian yang digunakan oleh peneliti adalah cross-sectional dengan tujuan untuk mengetahui apakah terdapat hubungan antara tingkat

Berdasarkan data kejadian bencana di beberapa daerah banyak korban terjadi pada anak usia sekolah baik di jam sekolah ataupun di luar jam sekolah, hal ini

Kepada Jemaat yang baru pertama kali mengikuti ibadah dalam Persekutuan GPIB Jemaat “Immanuel” Depok dan memerlukan pelayanan khusus, dapat menghubungi Presbiter

Berdasarkan hasil studi pendahuluan yang telah dilaksanakan oleh peneliti dengan melihat data rekam medis di ruang nifas RSUD ‘45 Kuningan pada tanggal 24-29

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa karena telah membukakan jalan dan kemudahan, sehingga skripsi yang berjudul “ANALISIS WACANA KRITIS TENTANG

Syarifa Andiana Syarif : Penerapan Metode Kromatografi Cair Kinerja Tinggi (KCKT) Pada Penetapan Kadar Deksametason Dalam Tablet Campuran Dengan Deksklorfeniramin Maleat,