Minggu, 19 April 2009

Komunikasi data Antar Class di java

Komunikasi data merupakan hal yang sangat penting dalam dunia programing. dengan ini memungkinkan kita untuk bisa mengambil dan mengeset data pada sebuah class dari class yang lainnya. hehehe jadi kaya dosenku aja . udah lah yang jelas biasanya komunikasi data ini ditandai dengan adanya methos setter dan getter.

Ah cukup deh basa basinya. nanti malah pada bingung lagi. udah tak kasih conto aja yah.
Berawal dari pertanyaan seorang temen, (Weleh weleh koq malah kayak bacain dongeng hehe) saya mencoba membuat sebuah aplikasi sederhana yang menunjukan komunikasi antar class.

Yup pertama kita buat aja sebuah project sederhana dengan Netbeans (pake IDE lain juga boleh namanya juga contoh). saya membuat sebuah program sederhana untuk mengambil data dari tabel yang berada JDialog kemudian hasilnya ditampilkan di textfield di JFrame.

Buat 1 JFrame dan 1 JDialog sebagai interface
Buat tampilan JFrame Kayak Gini:


Dan buat tampilan JDialog Kyak gini:


Kemudian buat sebuah Class Mahasiswa kemudian ketikan kode berikut:

package net.fiqri.datademo;

public class MahasiswaOBJ {
private String nama;
private String nmp;
private String alamat;
private String jurusan;

public MahasiswaOBJ() {
}


public MahasiswaOBJ(String nama, String nmp, String alamat, String jurusan) {
this.nama = nama;
this.nmp = nmp;
this.alamat = alamat;
this.jurusan = jurusan;
}

public String getAlamat() {
return alamat;
}

public void setAlamat(String alamat) {
this.alamat = alamat;
}

public String getJurusan() {
return jurusan;
}

public void setJurusan(String jurusan) {
this.jurusan = jurusan;
}

public String getNama() {
return nama;
}

public void setNama(String nama) {
this.nama = nama;
}

Setelah itu Tambahkan event pada tombol yang berfungsi untuk memunculkan JDialog:


Kode:
DetailView dt=new DetailView(this, true);
dt.setVisible(true);
MahasiswaOBJ mho=dt.getTableData();
if(mho!=null){
jTextField1.setText(mho.getNama());
jTextField2.setText(mho.getNmp());
jTextField3.setText(mho.getAlamat());
jTextField4.setText(mho.getJurusan());
}else{
JOptionPane.showMessageDialog(null, "Data Mahasiswa Kosong/Tidak ada");
}

Kemudian Beralih ke JDialog, kemudian Tambahkan event mouseClicked pada tabel:
if(evt.getClickCount()==2){
dataTable=new MahasiswaOBJ();
TableModel data=jTable1.getModel();
dataTable.setNama(data.getValueAt(jTable1.getSelectedRow(), 0).toString());
dataTable.setNmp(data.getValueAt(jTable1.getSelectedRow(), 1).toString());
dataTable.setAlamat(data.getValueAt(jTable1.getSelectedRow(), 2).toString());
dataTable.setJurusan(data.getValueAt(jTable1.getSelectedRow(), 3).toString());
this.setVisible(false);
}

Beres deh, sekarang Coba Run



Sorry kalo tulisannya agak membingungkan, maklum masih belajar jadi jurnalis .
Mudah mudahan membantu dan bermanfaat.
kalau mo yang dah jadi, Neeeeeh Source Codenya



Digg Google Bookmarks reddit Mixx StumbleUpon Technorati Yahoo! Buzz DesignFloat Delicious BlinkList Furl

25 komentar: on "Komunikasi data Antar Class di java"

Mr. SKHAI mengatakan...

makasih y mas,.. eh salah,.. makasih y brow,.he.he.he.. karena udah menjawab pertanyaan saya. tutorialnya bermanfaat banget. hidup java.^_^.

Mr. SKHAI mengatakan...

brow bleh ga' sya buat alamat blog brow di blog saya... trus klo saya dapet ilmu java dari brow, bleh ga' saya postingin ilmu itu di blog saya?? sbelumnya makasih y brow...

Black Onta mengatakan...

Boleh Saja, Keep Share Brow

Mr. SKHAI mengatakan...

ngeganggu lagi ni brow,^_^. pemanggilan jTable antar frame yang brow ajarkan sudah saya coba di rumah, untuk memanggil table-nya sukses. tapi pas di event mouseClicked-nya terjadi masalah, data yang tampil pas di klik tidak mau pindah di jTexField frame pemanggil. trus klo untuk format jYearchooser kan Integer brow, apa format yang bisa dipakai untuk inisialnya, karna dengan menggunakan :

dataTable.setAngkatan(data.getValueAt(tabelBaru1.getSelectedRow(), 0).toString());

netbeans tidak bisa mengenalinya.

1 lagi brow, klo event MouseClicked-nya harus di klik berkali2 dulu, baru keluar datanya di jTexField, hal tersebut penyebabnya apa brow?. makasih untuk jawabanya..

Black Onta mengatakan...

perhatikan even mouse clicknya:
Pastikan ada: if(evt.getClickCount()==2)itu kalo mo ketika di double click, tapi klo mo satu kali click aja langsung keluar, maka ga usah pake if diatas. trus kalo memang data yang diambil mau berbentu integer, ya tinggal ganti aja method data getValueAt(index, index).toString(); nya jangan to sting tapi jadi getValueAt(index, index)aza Ok. semoga berhasil

Mr. SKHAI mengatakan...

sorry brow pertanyaannya ada yang tinggal.. klo untuk format jDateChooser apa brow, pake getDateFormatString or getDate tanggalnya ga' mau keambil dari tabel untuk di kirim ke jTexField satunya(yang pake getValueAt), apa solusinya brow? thanks

Black Onta mengatakan...

coba perhatikan pada model tabelnya, dalam tabel model, pas get value at nya di return Date gak, kalau gak coba aja di parse ke format tanggal, moga membantu

Mr. SKHAI mengatakan...

Assalamualaikum wr.wb brow, nanya lagi nih brow tentang jTable antar frame.^_^. udah mentok bener nih brow.

pertama udah saya coba untuk menukar format integer di classobjectmhs yang saya buat dengan format integer :

public Integer getangkatan() {
return angkatan;
}

public void setangkatan(Integer angkatan) {
this.angkatan = angkatan;
}
pas saya running dan saya klik data di table mhs, tahun(jYearChooser) tetap ga' mau keluar.

yang kedua :

untuk jDateChooser sama juga dengan jYearChooser, data yang ada dalam tabel, pas saya klik tetap tidak mau keluar. padahal format di classobjectmhs-nya sudah saya ubah menjadi :

private Date tgl1;

public Date gettgl1(){
return tgl1;
}

public void settgl1(Date tgl1){
this.tgl1 = tgl1;
}

saya juga sudah coba menukar format tanggal-nya jadi :

if(jDateChooser1.getDate() != null) {
String pattern = "yyyy-MM-dd";
SimpleDateFormat format = new SimpleDateFormat(pattern);
tgl = String.valueOf(format.format(jDateChooser1.getDate()));
}

padahal format ini sudah saya coba untuk menggunakan satu frame saja, pas saya running dan data-nya di klik jDateChooser-nya mau tampil.

yang ketiga :

pas saya coba merunning program, data yang ada dalam jTable mau tampil ke dalam jTextField frame pemanggil. tapi yang mau dipanggil hanya data dari salah satu mahasiswa saja, pas saya klik data untuk mahasiswa selanjutnya terjadi error.

penjelasannya gini brow. kan pas di jalanin jTable-nya dan di tampilkan datanya, saya akan mengklik salah satu data mahasiswa, setelah di klik data mahasiswa tersebut akan tampil di jTextField dan jComboBox frame pemanggil, dan jTable tersebut akan hilang, karena jTable tersebut kondisinya setVisible false, setelah diklik. data mahasiswa pertama tersebut mau tampil. tapi pas di klik untuk mahasiswa kedua terjadi error, errornya seperti di bawah ini brow(sebagian potongan error-nya saja y brow) :

Exception occurred during event dispatching:
java.lang.NullPointerException
at Akbid.TablMhsAkbid.tabelBaru1MouseClicked(TablMhsAkbid.java:269)
at Akbid.TablMhsAkbid.access$200(TablMhsAkbid.java:37)
at Akbid.TablMhsAkbid$3.mouseClicked(TablMhsAkbid.java:205)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)

jTable-nya ga' mau hilang setelah di klik, harus di close secara manual terlebih dahulu. tapi anehnya pas di close manual data tersebut baru tampil di jTexField dan jComboBox yang ada pada frame pemanggil tersebut.

tolong solusinya brow, klo brow ga' keberatan, bisa ga' brow jelasin lagi ma posting terbaru lewat blog brow(sama listing program-nya klo bisa y brow.^_^, yang make jYearChooser dan jDatehooser).
sebelumnya mintak maaf nih brow udah ngeganggu hari2 brow untuk menjawab pertanyaan saya.^_^. makasih..

Mr. SKHAI mengatakan...

brow, udah saya download sourcode-nya, tapi library untuk tanggalnya error. saya tes pake library jDateChooser juga ga' mau kebuka... mintak donk library-nya...???^_^.. piiiss juga...

Black Onta mengatakan...

Peke JDateChoooser Koq supaya gak error cobadeh tambahkan dulu jdate choosernya ke library dan palete-nya netbeans (klo pake netbeans) Piis ah

Mr. SKHAI mengatakan...

sory,..brow..agak lama nih ga' nanya2..maklum baru balik dari kampung.he..he...thank brow, skarang udah agak ngerti dikit masalah jTable, walaupn blm begitu banyak, maklum iQ standar..ha..ha..haaa...o y brow, klo kita pengen membuat program untuk jadwal kul, apa aja field yang kita butuhkan, selain kode, nama dosen, kode kul, nm mtk kul, jam masuk, jam keluar, minggu, hari, lokal, kelas,..pa lagi y brow kira2 yang dibutuhkan..trus gimana mengatur supaya jadwal mata kuliah per jam itu, ngak bentrok...?.bisa di postingin ngak brow utk buat program database...makasih y brow..^_^..

Black Onta mengatakan...

Coba buatkan class-class tersendiri (Pisahkan dulu). so kita bisa liat yang mana yang kurang yang mana yang perlu dihilangkan. coba deh baca dulu ini:
Perancangan

Mr. SKHAI mengatakan...

thank brow, untuk masukkannya...bermanfaat nih buat newbie java seperti saya,..karena selama ini lansng coding..makasih brow...o y brow, kok brow ga' da lagi postingin tentang tahap2 pembuatan program database...?klo bisa sampe selesai brow postingan database-nya..^_^..ini sih sekedar usul...supaya newbie java lebih terstruktur pemrograman database-nya...^_^...

Black Onta mengatakan...

Pengennya sih, tp jadwalnya kacau nih brow jadi ya gitu deh, ntar deh klo sempet

Mr. SKHAI mengatakan...

kapan nih brow, postingin pembuatan aplikasi database lagi..^_^..kalo bisa yang berhubungan sama akademik kampus brow, soalnya sekarang kan aku lagi kuliah...jadi bisa lebih tau bagaimana sistem sebuah kampus dibuat, klo bisa digabungin ma swing ekstream biar lebih keren..ok brow...thanks brow...

Anonim mengatakan...

mas mau nanya tau cara buat DBpaket.jar g?

Black Onta mengatakan...

@anonim: Maksudnya gimna bro??

wawan mengatakan...

brooooo..tengkyu banget ya..dengan adanya tulisan diatas, gw selangkah lebih maju nih dlm mempelajari rumitna bhs java...semoga tetep sukses bro....

p.s:
ditunggu tulisan2 bermutunya di masa mendatang. :)

Anonim mengatakan...

sorryy broow

gw pengen jadi programer tp bingun harus mulai dari mana ??

kasih tau tips"nya buat jadi seorang programer brow...

thk

Anonim mengatakan...

terima kasih mas .,.,moga makin sukses ,

Anonim mengatakan...

makasih tutorialn nya
sy mau tanya kalau di balik gmana yah ??

pas tabel di klik mncul JDialog yg isi nya ada di tabel td tp berupa label
ini gmana y???

Unknown mengatakan...

gan, mau nanya dong
class ini dibuat dimana ?

DetailView dt=new DetailView(this, true);

thanks

Anonim mengatakan...

mau tanya bagaimana ya caranya form databarang menjadi jframe dan ambil barang jadi jdialog mohon bantuannya ya....

seperti sistem update...

vian-jaringan.blogspot.com mengatakan...

Wahhh keren bang.,lumayan buat dicoba dulu bang hehehe