he.he.heeee, halooo friends2 java smuanya... jumpa lagi sama saya. kali ini,
kita bersama akan membahas bagaimana menyimpan, menampilkan, mengedit
serta menghapus gambar pake netbeans. posting ini saya tulis, setelah
sekian lama mencari-cari di mbah google, serta tanya blog tetangga, ikut
miling list dan lain sebagainya.he.he.heeee..
Aq : tak ceritain ga' ya???
Qm : ngak..ngak..ngak usah,... ntar kayak kemarin kelamaan...
Aq : ngak kok friends, ceritanya ngak lama2 lagi, please... kan kalo ngak pake cerita ngak seru
Qm : y udah ceritain tapi ngak pake lama...
Aq : wah.. friends emang temen yang baik... thanks y... begini nih ceritanya...
pada
suatu hari(kayak dongeng2 aja..he.heee), waktu itu Aq baru diterima
kerja, langsung aja disuruh buat program, pertama-nya sih disuruh buat
program web, tapi karena blind(alias buta) ma program web Aq langsung
bilang dengan jujur(maklum dari kecil diajarin ma buk guru, ngak boleh
bohong.^_^), kalo aku ngak bisa buat program web. tapi aku bisanya buat
program aplikasi yang stand alone(eh.. betul ngak ya tulisannya,.. klo
salah sory y.. maklum bahasa inggris dapet C melulu... Qm : siapa sih
dosen-nya??).
setelah berbincang cukup sebentar dengan bos di
sana, bos bisa nerimanya. mulai deh saya oprek-oprek program java, yang
udah lama tak tinggal karena sibuk dengan urusan2 pribadi(maen bola,
mancing, pacaran, dst... pokoknya urusan pribadi..). karena dulu pas tak
tinggal program java netbeans saya masih mentah banget... malah
kebangetan(bisanya cuma program save, edit, delete, exit doank...). akan
tetapi karena kita adalah orang indonesia, kita tidak boleh mudah
menyerah kita harus tetap berjuang sampai tetes darah penghabisan(Qm :
eh kok malah kayak kemarin lagi.. kampanye.. kayaknya lebih cocok jadi
caleg, dari pada programer. Aq : eh.. sory keceplosan lagi deh..).
setelah
berjuang akhirnya selesai juga program save mahasiswa, akan tetapi ada
temen yang ngasih masukkan lagi, dia bilang gini : TmenQu : khai, bisa
ngak nampilin foto di java netbeans??
Aq : (mulai mumet lagi nih
otak, program standar ja, kayak gini apa lagi nampilin foto??)tapi
sekali lagi kita bangsa indonesia tidak mudah menyerah(Qm : udah..
udah... jangan kampanye lagi donk, ceritanya kepanjangan. Aq : y..y..
tak singkat ja ceritanya.).
semenjak hari itu, langsung deh tak
duduk depan monitor, sambil ngoprek sana sini, melototin monitor ampe
mata sakit. tetap juga tak dapet. akhirnya otak kanan ngasih ide, gini
katanya : eh, khai cuba ja lo tanya ma mbah google, siapa tau dapet..
setelah dapet ide dari si otak, langsung deh mintak kiriman tambahan
sama orang tua, buat biaya pergi ke warnet.he.he.heee...
akhirnya,
jreng...jreng.... dapet juga pencerahan dari mbah google, gini katanya :
cucu, coba cucu pergi ke sahabat sekaligus cucu mbah yang telah lama
berjuang di dunia java, namanya om4gus, dia tinggal di
www.om4gus.blogspot.com.. setelah dapet pencerahan dari mbah google,
langsung deh pergi nemuin cucunya mbah google, om4gus namanya, ya ngak
om.^_^. setelah konsultasi sama om4gus, akhirnya om ngasih ilmunya ke
saya buat nyimpan foto.
udah ngak sabar ya friends, hahahahahahaha... nih ilmunya :
penyimpanan
foto di dalam database, merupakan hal yang penting jika kita membuat
aplikasi database mahasiswa or karyawan or pegawai(kata saya sih
penting.^_^). dalam melakukan penyimpanan gambar or foto dalam database
dapat dilakukan dengan dua cara. yakni, dengan menyimpan field gambar
tersebut langsung ke dalam database dalam bentuk binary. cara kedua
adalah, dengan hanya menyimpan data alamat foto tersebut ke dalam
database, sementara gambar or fotonya disimpan dalam folder.
nah
temen2 pada kesempatan kali ini kita hanya akan membahas cara kedua,
yakni memasukkan data alamat gambar ke dalam database. sementara foto or
gambarnya ke dalam folder dari program yang kita buat.
nih langkah pertama yang kita harus buat :
1. buat database dengan nama database terserah anda(Ex : dbMhs or dbKaryawan, dan lain sebagainya..he.he.heeee..).
nih contoh script create databasenya :
CREATE DATABASE `dbMhs`;
USE `dbMhs`;
CREATE TABLE IF NOT EXISTS `Mhs` (
`NoBp` varchar(15) NOT NULL,
`namaMhs` varchar(100) NOT NULL,
`jekel` char(7) NOT NULL,
`alamat mahasiswa` varchar(200) NOT NULL,
PRIMARY KEY (`NoBp`)
);
2.untuk menampilkan gambar or foto di form project netbeans, kita menggunakan canvas, yang ada pada Editor Netbeans, tapi kita harus ubah bagian code, custom creation code, dengan new Painter();
caranya :
klik kanan pada canvas, lalu ambil propertis trus klik tab variable, selanjutnya ubah custom creation code dengan new Painter();
sedangkan untuk Editor swing lainnya tetap memakai construktor or editor netbeans seperti biasanya tanpa harus diedit.
Ex
: untuk NoBp kita tetap memakai jTextField, nama jTextfield, jenis
kelamin dapat memakai jComboBox or jRadioButton, dan alamat dapat
memakai list atau jTextField..
nah ini listing programnya, silahkan di pelajari dan di sedot sepuasnya..he.he..he... :
listing
pertama, pada jButton1(button untuk membuka lokasi gambar or foto, nama
variabel button-nya dapat kita rubah dengan nama bBuka atau yang
lainnya, saya tiru aja nama variabel om4gus, boleh kan om.^_^) :
private void bBukaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bBukaActionPerformed
javax.swing.JFileChooser jfc = new JFileChooser();
FileFilter jpgFilter, gifFilter, bothFilter;
jpgFilter = new FileNameExtensionFilter("Gambar JPEG", "jpg");
gifFilter = new FileNameExtensionFilter("Gambar GIF", "gif");
bothFilter = new FileNameExtensionFilter("Gambar JPEG dan GIF", "jpg", "gif");
jfc.setAcceptAllFileFilterUsed(false);
jfc.addChoosableFileFilter(jpgFilter);
jfc.addChoosableFileFilter(gifFilter);
jfc.addChoosableFileFilter(bothFilter);
if (jfc.showOpenDialog(this) == jfc.APPROVE_OPTION) {
String f = jfc.getSelectedFile().toString();
eGambar.setText(f);
((Painter) cGambar).setImage(f);
}
}
listing
kedua, pada jButton2(button untuk menyimpan alamat foto ke database,
sementara fotonya sendiri disimpan ke dalam folder. nama variabel
button-nya dapat kita rubah dengan nama bSimpan atau yang lainnya(Ex :
bSave, dll), saya tiru aja nama variabel om4gus lagi, boleh y om.^_^) :
private void bSimpanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSimpanActionPerformed
String jk = (eL.isSelected() ? "L" : "P");// dapet juga menggunakan combo untuk memilih jenis kelaminnya..
String perintah = "insert into data_pegawai values (" +
"'" + eID.getText() + "'," +
"'" + eNama.getText() + "'," +
"'" + jk + "'," +
"'" + eAlamat.getText() + "'" +
")";
try {
new NIOCopier(eGambar.getText(), gambar(eID.getText()));
if (stmt.executeUpdate(perintah) > 0) {
JOptionPane.showMessageDialog(this, "Penyimpanan berhasil");
}
} catch (Exception ex) {
cetak(ex.toString());
}
kosongkan();
}
listing
ketiga, diletakkan pada jButton3(button untuk melakukan pencarian foto
yang telah kita simpan. nama variabel button-nya dapat kita rubah dengan
nama bCari atau yang lainnya(Ex : bSave, dll), tak tiru lagi y om4gus
nama variabelnya, boleh y om.^_^) :
private void bCariActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bCariActionPerformed
String id = eID.getText();
String perintah = "select * from data_pegawai where id = '" + id + "'";
kosongkan();
try {
ResultSet hasil = stmt.executeQuery(perintah);
for (int I = 0; hasil.next(); I++) {
eID.setText(hasil.getString(1));
eNama.setText(hasil.getString(2));
if (hasil.getString(3).equals("L")) {
eL.setSelected(true);
}
if (hasil.getString(3).equals("P")) {
eP.setSelected(true);
}
eAlamat.setText(hasil.getString(4));
((Painter) cGambar).setImage(gambar(id));
}
} catch (Exception ex) {
cetak(ex.toString());
}
}
listing program ini di buat untuk membersihkan Editor netbeans pada form yang kita buat :
private void kosongkan() {
eAlamat.setText("");
eGambar.setText("");
//cGambar = new Painter();
((Painter) cGambar).setImage("");
eID.setText("");
eL.setSelected(false);
eP.setSelected(false);
eNama.setText("");
}
listing program untuk menkoneksikan program kita ke database :
public void testDriver() {
try {
java.lang.Class.forName(mySqlDriver);// dapat dirubah dengan jdbc java(sun.jdbc.odbc.JdbcOdbcDriver)
con = java.sql.DriverManager.getConnection(mySqlUrl, "root", "");("jdbc:odbc:nama datasources","","")
stmt = con.createStatement();
} catch (Exception ex) {
cetak(ex.toString());
}
}
Menentukan tempat penyimpanan gambar
private String gambar(String id) {
return folder + File.separator + id.trim() + ".jpg";
}
listing
untuk mengcopykan gambar or foto ke dalam folder, dimana nama gambar
atau foto yang akan dicopykan ke dalam folder tersebut akan sama dengan
NoBp or Id dari mahasiswa atau karyawan.
public class NIOCopier {
public NIOCopier(String asal, String tujuan) throws IOException {
FileInputStream inFile = new FileInputStream(asal);
FileOutputStream outFile = new FileOutputStream(tujuan);
FileChannel inChannel = inFile.getChannel();
FileChannel outChannel = outFile.getChannel();
for (ByteBuffer buffer = ByteBuffer.allocate(1024 * 1024);
inChannel.read(buffer) != -1;
buffer.clear()) {
buffer.flip();
while (buffer.hasRemaining()) {
outChannel.write(buffer);
}
}
inChannel.close();
outChannel.close();
}
}
listing program ini, untuk mengatur gambar or foto yang akan ditampilkan ke dalam canvas.
public class Painter extends Canvas {
Image image;
public void setImage(String file) {
URL url = null;
try {
url = new File(file).toURI().toURL();
} catch (Exception ex) {
cetak(ex.toString());
}
image = getToolkit().getImage(url);
repaint();
}
public void paint(Graphics g) {
double d = image.getHeight(this) / this.getHeight();
double w = image.getWidth(this) / d;
double x = this.getWidth() / 2 - w / 2;
g.drawImage(image, (int) x, 0, (int) (w), this.getHeight(), this);
}
}
nah, selesai deh pembahasan kali ini, jangan lupa masukkannya, ok friends. wasalam...