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


read more...

Selasa, 14 April 2009

Let's Start to Rock Your Swing


yup seperti janji kemaren, postingan ini bercerita tentang extreem swing make over. inti dari swing make over ini adalah perubahan tampilan se extreem mungkin. yang memang jika seelumnya ada temen temen yang menggunakan bahasa pemograman lain spt delphi atau VB, sulit untuk mengobrak abrik tampilan, karena memang tidak sefleksible swing.
konsep ini sudah lama adanya, tp saya baru berani posting sekarang, soalnya baru ketemu rahasianya akhir akhir ini. jadi yang setelah sedikit tau, gak ada salahnya di share. (hehe kayak yang jago aja)
Yang harus di perhatikan dalam merubah tampilan dari Swing kita akan meng-override method paint(), atau painComponent(). karena kedua method inilah yang digunakan swing untuk membentuk tampilan.

Ok kita mulai.

pada postingan ini saya akan membuat gradienPanel, itu lho panel yang warna warni (he kayak pelangi aja).
pertama siapkan editor temen-temen. (kalau saya pake netbeans biar lebih asik soalnya lebih mudah digunakan nantinya).
Ok Copy pastekan aja Code ini:
__________________________________________________________________________
/*
* DILARANG MENGHAPUS ATAU MENGEDIT COPYRIGHT INI.
*
* Copyright 2009 Fiqri Tech
* All rights reserved.
*
* Semua isi dalam file ini adalah hak milik dari blackonta@gmail.com
* Anda tak diperkenankan untuk menggunakan file atau mengubah file ini
*
*/

package ovq.fiqri.lib.swing.plaf;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;

/**
*
* @author Opik
*/
public class QGradienPanel extends JPanel{
private static final long serialVersionUID = -1;
private BufferedImage gradientImage;
private Color warnaAtas = new Color(204, 249, 124);
private Color warnaBawah = new Color(174, 222, 94);

public QGradienPanel(){
super();
this.setBorder(javax.swing.BorderFactory.createEmptyBorder(3,3,3,3));
}

public QGradienPanel(LayoutManager layout) {
super(layout);
addComponentListener(new GradientCacheManager());
}

public Color getWarnaAtas() {
return warnaAtas;
}

public void setWarnaAtas(Color warnaAtas) {
this.warnaAtas = warnaAtas;
}

public Color getWarnaBawah() {
return warnaBawah;
}

public void setWarnaBawah(Color warnaBawah) {
this.warnaBawah = warnaBawah;
}

@Override
protected void paintComponent(Graphics g) {
createImageCache();
if (gradientImage != null) {
g.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
}
}

protected void createImageCache() {
int width = 2;
int height = getHeight();

if (width == 0 || height == 0) {
return;
}

if (gradientImage == null ||
width != gradientImage.getWidth() ||
height != gradientImage.getHeight()) {

gradientImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);

Graphics2D g2 = gradientImage.createGraphics();
GradientPaint painter = new GradientPaint(0, 0, warnaBawah,
0, height / 2, warnaAtas);
g2.setPaint(painter);

Rectangle2D rect = new Rectangle2D.Double(0, 0, width, height / 2.0);
g2.fill(rect);

painter = new GradientPaint(0, height / 2, warnaAtas,
0, height, warnaBawah);
g2.setPaint(painter);

rect = new Rectangle2D.Double(0, (height / 2.0) - 1.0, width, height);
g2.fill(rect);

g2.dispose();
}
}

private void disposeImageCache() {
synchronized (gradientImage) {
gradientImage.flush();
gradientImage = null;
}
}

private class GradientCacheManager implements ComponentListener {
public void componentResized(ComponentEvent e) {
}

public void componentMoved(ComponentEvent e) {
}

public void componentShown(ComponentEvent e) {
}

public void componentHidden(ComponentEvent e) {
disposeImageCache();
}
}
}
__________________________________________________________________________

nah perhatikan kode pada method paintComponent() diatas, Abaikan saja kode ini
if (gradientImage != null) {
g.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
}
}
soalnya itu dibuat kalau nantu temen temen ingin menggunakan gambar sebagai backgroundnya.
jadi backgroundnya akan dibuat menggunakan warna gradien antara warnaatas, dan warnaBawah.

Jadi ya hasilnya kurang lebih seperti ini:


nah kalau temen-temen pake netbeans, untuk penggunaannya tinggal drag class diaas ke JPanel, Jframe atau ke JDialog.


nah perhatikan pada propertiesnya maka akan ditambahkan dua properties sebagai berikut.



jadi kayak gini deh:

jadi tinggal dirubah saja warnanya sesuai dengan keinginan. ok moga bermanfaan n keep creative. Koment ya......
read more...

Jumat, 10 April 2009

I am Come Back

Wah Sory neh baru nongol lagi, baru selesai ngerjain KP. lumayang cape juga .

tapi sekarang udah beres n siap nge blogger lagi, sebelum bikin skripsi. gimana ada yang mo kasih ide?????.

terakhir kali saya janji mau kasih tutorial tentang bikin tampilan Extreem. yah tapi belom bisa neh klo sekarang , Tapi kayangnya minggu. ini bisa deh. ok deh udahan dulu.
read more...