The Importance of Sharing


Tulisan ini merupakan lanjutan dari artikel saya sebelumnya, yaitu Menampilkan Gambar dalam JPanel. Pada artikel tersebut saya hanya menampilkan file gambar yang ada di komputer ke dalam JPanel. Nah, pada tulisan kali ini saya ingin mengembangkannya, dimana gambar tersebut saya simpan ke dalam database. Database yang saya gunakan adalah MySQL, dan editornya adalah NetBeans 6.9.1 dan aplikasi yang saya buat berbasis desktop atau menggunakan Swing. Dalam pembuatan aplikasi ini, saya juga menerapakan DAO pattern yang sudah sedikit saya bahas sebelumnya disini.

Langsung saja saya mulai, pertama buat dulu databasenya, nama database yang saya gunakan adalah Coba dan untuk nama tabelnya adalah Karyawan, jadi scriptnya sebagai berikut.

CREATE DATABASE Coba;

USE Coba;

CREATE TABLE Karyawan(
id int PRIMARY KEY AUTO_INCREMENT,
nama VARCHAR(50) NOT NULL,
alamat VARCHAR(100) NOT NULL,
jenisKelamin VARCHAR(15) NOT NULL,
tglLahir DATE,
foto BLOB);

Tipe data yang digunakan untuk menyimpan gambar adalah BLOB atau Binary Large Object. Kemudian kita buka netbeans, lalu buat project baru dengan nama bebas terserah anda. Lalu buatlah sebuah JPanel yang mana nantinya akan kita gunakan sebagai tempat untuk menampilkan gambar tersebut. Jangan lupa untuk menambahkan library mysql ke dalam project anda.

 Kemudian pada klik tab source, lalu ketikkan kode berikut.

/**
 * PanelGambar.java
 *
 * Created on May 8, 2012, 3:42:41 PM
 */

package arya.form;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author arya
 */
public class PanelGambar extends javax.swing.JPanel {

    /** Creates new form PanelGambar */
    private Image image;
    public PanelGambar() {
        initComponents();
    }

    public void setImage(Image image){
        this.image = image;
        MediaTracker mediaTracker = new MediaTracker(this);
        mediaTracker.addImage(image, 0);
        try {
            mediaTracker.waitForID(0);
        } catch (InterruptedException ex) {
            Logger.getLogger(PanelGambar.class.getName()).log(Level.SEVERE, null, ex);
        }
        initComponents();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0,getWidth(),getHeight(), this);
    }
}

Sourcecode tersebut merupakan source code yang terdapat pada artikel saya sebelumnya, hanya saja saya melakukan sedikit perubahan, supaya bisa sedikit dinamis. Dimana perubahan tersebut adalah saya menggunakan method setImage untuk merubah gambar pada JPanel. Jika sudah selesai, untuk selanjutnya buatlah desain form seperti gambar dibawah ini.


Dibawah ini merupakan keterangan untuk masing – masing nomor diatas.

No Jenis Nama Fungsi
1 JTextField txtNama Menampung nama karyawan
2 JTextField txtAlamat Menampung alamat karyawan
3 JRadioButton rdPria Mewakili jenis kelamin pria
4 JRadioButton rdPerempuan Mewakili jenis kelamin wanita
ButtonGroup buttonGroup1 Menampung kedua JRadioButton
5 JDateChooser jdcLahir Menampung tanggal lahir karyawan
6 JTextField txtFoto Menampung nama / path gambar
7 JButton btnCari Mencari file gambar di komputer
8 PanelGambar panelGambar1 Menampilkan gambar yang telah dipilih
9 JButton btnSimpan Menyimpan data karyawan baru
10 JButton btnUbah Menyimpan perubahan data karyawan
11 JButton btnHapus Menghapus data karyawan
12 JButton btnBatal Menghapus isi komponen
13 JTable JTable1 Menampilkan semua data karyawan
JScrollPane jScrollPane1 Menampung JTable
14 JPanel jPanel1 Menampung komponen isian data karyawan

Untuk menampung pilihan tanggal lahir saya menggunakan control tambahan yaitu JDateChooser, control tersebut bisa dilihat disini. Nah, jika sudah selesai mendesain form, mari kita lanjutlkan dengan membuat entity. Mengapa demikian ? Karena saya menggunakan DAO pattern dalam pembuatan aplikasi ini. DAO pattern sudah saya bahas sekilas disini, namun hanya sekilas saja. Jika ingin lebih mendetail bisa melihat pada berbagai artikel atau buku yang ada. Dibawah ini adalah source code entity karyawan.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package arya.entity;

import java.util.Date;

/**
 *
 * @author arya
 */
public class Karyawan{
    private Long id;
    private String nama;
    private String alamat;
    private Date tglLahir;
    private String jenisKelamin;
    private byte[] foto;

    public byte[] getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }
    public String getAlamat() {
        return alamat;
    }

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

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getJenisKelamin() {
        return jenisKelamin;
    }

    public void setJenisKelamin(String jenisKelamin) {
        this.jenisKelamin = jenisKelamin;
    }

    public String getNama() {
        return nama;
    }

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

    public Date getTglLahir() {
        return tglLahir;
    }

    public void setTglLahir(Date tglLahir) {
        this.tglLahir = tglLahir;
    }

}

Entity tersebut berfungsi untuk mengenkapsulasi data karyawan baik dari database untuk ditampilkan ke aplikasi atau dari aplikasi untuk disimpan ke database. Entity merupakan class yang biasanya mendeskripsikan tabel yang ada didalam database. Jika diperhatikan dengan seksama, field – field yang terdapat dalam class Karyawan tersebut, sama dengan kolom – kolom yang terdapat dalam tabel karyawan, hanya saja tipe datanya yang sedikit berbeda. Hal ini sangat membantu bila ada programmer lain yang ingin memaintenance aplikasi kita. Karena dengan adanya entity, programmer lain tahu apa saja tabel, kolom dan sebagainya yang tersimpan didalam database tanpa harus membuka database. Untuk menampung data foto karyawan supaya bisa disimpan ke dalam database kita menggunakan byte sebagai tipe datanya namun berupa array 1 dimensi.

Karena saya menggunakan DAO pattern, maka untuk selanjutnya kita membuat interface, yang isinya merupakan pendefinisian dari method – method untuk memanipulasi database.

package arya.dao;

import arya.entity.Karyawan;
import java.util.List;

/**
 *
 * @author arya
 */
public interface KaryawanDao {

    public void save(Karyawan karyawan);
    public void update(Karyawan karyawan);
    public void delete(Karyawan karyawan);
    public List<Karyawan> getAll();

}

Selanjutnya kita buat implementasi dari interface tersebut seperti ini.

package arya.dao.impl;

import arya.dao.KaryawanDao;
import arya.entity.Karyawan;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Date;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author arya
 */
public class KaryawanDaoImpl implements KaryawanDao{
private Connection connection;

    public KaryawanDaoImpl(Connection connection){
        this.connection = connection;
    }
    public void save(Karyawan karyawan) {
        String SQL = "INSERT INTO Karyawan(nama,alamat,jenisKelamin,tglLahir,foto) VALUES(?,?,?,?,?)";
        try {
            PreparedStatement statement = connection.prepareStatement(SQL);
            statement.setString(1, karyawan.getNama());
            statement.setString(2, karyawan.getAlamat());
            statement.setString(3, karyawan.getJenisKelamin());
            statement.setDate(4, new Date( karyawan.getTglLahir().getTime()));
            statement.setBytes(5, karyawan.getFoto());
            statement.executeUpdate();
        } catch(SQLException ex) {
            Logger.getLogger(KaryawanDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public void update(Karyawan karyawan) {
        String SQL = "UPDATE Karyawan set nama=?, alamat=?,jenisKelamin=?,tglLahir=?,foto=? WHERE id=?";
        try {
            PreparedStatement statement = connection.prepareStatement(SQL);
            statement.setString(1, karyawan.getNama());
            statement.setString(2, karyawan.getAlamat());
            statement.setString(3, karyawan.getJenisKelamin());
            statement.setDate(4, new Date(karyawan.getTglLahir().getTime()));
            statement.setBytes(5, karyawan.getFoto());
            statement.setLong(6, karyawan.getId());
            statement.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(KaryawanDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void delete(Karyawan karyawan) {
        String SQL="DELETE FROM Karyawan WHERE id=?";
        try {
            PreparedStatement statement = connection.prepareStatement(SQL);
            statement.setLong(1, karyawan.getId());
            statement.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(KaryawanDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public List<Karyawan> getAll() {
        String SQL = "SELECT id,nama,alamat,jenisKelamin,tglLahir,foto FROM Karyawan";
        List <Karyawan> list = new ArrayList();
        Karyawan karyawan = null;
        try {
            PreparedStatement statement = connection.prepareStatement(SQL);
            ResultSet rs = statement.executeQuery();

            while (rs.next()){
                karyawan = new Karyawan();
                karyawan.setId(rs.getLong(1));
                karyawan.setNama(rs.getString(2));
                karyawan.setAlamat(rs.getString(3));
                karyawan.setJenisKelamin(rs.getString(4));
                karyawan.setTglLahir(rs.getDate(5));
                karyawan.setFoto(rs.getBytes(6));
                list.add(karyawan);
                karyawan=null;
            }
        } catch (SQLException ex) {
            Logger.getLogger(KaryawanDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return list;
    }

}

Anda bisa lihat kode DAO tersebut hanya berisi kode untuk memanipulasi database. Kode tersebut tidak mengandung business logic aplikasi. Jadi aplikasi nantinya cukup memanggil method – method yang sudah disediakan oleh DAO tersebut. Untuk selanjutnya kita buat kelas, semacam utility class, yang isinya koneksi ke database dan objek – objek DAO tersebut.

package arya.koneksi;

import arya.dao.KaryawanDao;
import arya.dao.LaporanKaryawanDao;
import arya.dao.impl.KaryawanDaoImpl;
import arya.dao.impl.LaporanKaryawanDaoImpl;
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Koneksi {
    private static Connection connection;
    private static KaryawanDao karyawanDao;
    private Koneksi(){

    }

    private static Connection getConnection() {
        if (connection==null){
            try {
                DriverManager.registerDriver(new Driver());
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/Coba", "root","bandenk");
            } catch (SQLException ex) {
                Logger.getLogger(Koneksi.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
        return connection;
    }

    public static KaryawanDao getKaryawanDao() {
        if (karyawanDao==null){
            karyawanDao = new KaryawanDaoImpl(getConnection())
        }
        return karyawanDao;
    }

}

Dengan adanya class utilty tersebut, kita akan membuat objek DAO tersebut menjadi seperti ini.


KaryawanDao dao = Koneksi.getKaryawanDao();

bukan


KaryawanDao dao = new KaryawanDaoImpl();

Teknik ini biasanya dikenal dengan istilah Dependency Injection.

Nah, kemudian kita pindah ke form yang telah kita buat tadi, untuk kita isi dengan business logic aplikasi kita. Pertama, kita buat dulu inner class yang meng-extends class AbstractTableModel. Fungsi kelas ini adalah untuk memudahkan kita didalam memanipulasi JTable. Di dalam constructor kita buat objek table modelnya lalu kita isikan ke dalam jTable1, selain itu kedua JRadioButton yang kita punya, kita masukkan  ke dalam buttonGroup1.

/**
 * FrameKaryawan.java
 *
 * Created on May 8, 2012, 2:13:40 PM
 */

package arya.form;

import arya.entity.Karyawan;
import arya.koneksi.Koneksi;
import java.awt.Image;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import javax.swing.table.AbstractTableModel;

/**
 *
 * @author arya
 */
public class FrameKaryawan extends javax.swing.JFrame {

    private TableModelKaryawan model;
    private List<Karyawan> karyawans;
    private Image image;
    private Karyawan karyawan;
    public FrameKaryawan() {
        initComponents();
        karyawans = new ArrayList();
        buttonGroup1.add(rdPria);
        buttonGroup1.add(rdPerempuan);
        model = new TableModelKaryawan();
        jTable1.setModel(model);
    }
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private class TableModelKaryawan extends AbstractTableModel{
        private List <Karyawan> list = new ArrayList();

        public void setData(List<Karyawan> list){
            this.list = list;
            fireTableDataChanged();
        }
        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).getAlamat();
                case 2 : return list.get(rowIndex).getJenisKelamin();
                case 3 : return list.get(rowIndex).getTglLahir();
                default: return null;
            }
        }

        @Override
        public String getColumnName(int columnIndex) {
            switch(columnIndex){
                case 0 : return "Nama";
                case 1 : return "Alamat";
                case 2 : return "Jenis Kelamin";
                case 3 : return "Tanggal Lahir";
                default: return null;
            }
        }
        public void insertTable(Karyawan karyawan){
            list.add(karyawan);
            fireTableDataChanged();
        }
        public void updateTable(Karyawan karyawan,int rowIndex){
            list.set(rowIndex, karyawan);
            fireTableDataChanged();
        }
        public Karyawan get(int rowIndex){
            return list.get(rowIndex);
        }
    }
}

Kemudian kita buat method untuk me-load seluruh data Karyawan dari database dan juga method untuk mengembalikkan form seperti keadaan semula.


private void loadData(){
        karyawans = Koneksi.getKaryawanDao().getAll();
        model.setData(karyawans);
    }
    private void clear(){
        txtNama.setText("");
        txtAlamat.setText("");
        buttonGroup1.clearSelection();
        jdcLahir.setDate(new Date());
        txtFoto.setText("");
        panelGambar1.setImage(null);
        btnUbah.setEnabled(false);
        btnHapus.setEnabled(false);
        btnSimpan.setEnabled(true);

    }

Method tersebut kita panggil pada saat objek Frame dibuat, maka dari kita panggil method tersebut pada constructor. Skenario aplikasi ini adalah, ketika form pertama kali ditampilkan, maka seluruh data ditampilkan di JTable serta tombol ubah dan hapus kita set enable menjadi false, kedua tombol tersebut diaktifkan pada saat JTable diklik.

Jika sudah selesai, kita beri event pada masing – masing tombol, yang pertama untuk tombol cari atau btnCari. Tombol ini berfungsi untuk mencari gambar di komputer dan menampilkannya ke dalam JPanel. Kodenya sebagai berikut.

private void btnCariActionPerformed(java.awt.event.ActionEvent evt) {
        JFileChooser chooser = new JFileChooser(System.getProperty("user.home"));
        chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        chooser.setFileFilter(new FileNameExtensionFilter("jpg|png|bmp", "jpg","png","bmp"));

        if(chooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){
            File file=chooser.getSelectedFile();
            try {
                image = ImageIO.read(file);
                panelGambar1.setImage(image);
            } catch (IOException ex) {
                Logger.getLogger(FrameKaryawan.class.getName()).log(Level.SEVERE, null, ex);
            }
            txtFoto.setText(file.getAbsolutePath());
        }
    }

Kemudian dibawah ini adalah kode untuk event tombo simpan atau btnSimpan.

private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
        karyawan = new Karyawan();
        karyawan.setNama(txtNama.getText());
        karyawan.setAlamat(txtAlamat.getText());
        karyawan.setTglLahir(jdcLahir.getDate());
        if (rdPria.isSelected()){
            karyawan.setJenisKelamin("Laki - Laki");
        }else{
            karyawan.setJenisKelamin("Perempuan");
        }

        if(!txtFoto.getText().equals(&quot;&quot;)){
            ObjectOutputStream objectOutputStream=null;
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            try {
                objectOutputStream = new ObjectOutputStream(outputStream);
                ImageIcon icon = new ImageIcon(image);
                objectOutputStream.writeObject(icon);
                objectOutputStream.flush();
                objectOutputStream.close();
            } catch (IOException ex) {
                Logger.getLogger(FrameKaryawan.class.getName()).log(Level.SEVERE, null, ex);
            }
            karyawan.setFoto(outputStream.toByteArray());
        }
        Koneksi.getKaryawanDao().save(karyawan);
        loadData();
        clear();
    }

Supaya gambar bisa disimpan ke dalam database saya harus merubah gambarnya yang bertipe Image menjadi ImageIcon, karena kalau tidak saya mendapat pesan error.

“java.io.NotSerializableException: java.awt.image.BufferedImage”

Kemudian untuk tombol ubahnya atau btnUbah

private void btnUbahActionPerformed(java.awt.event.ActionEvent evt) {
        karyawan.setNama(txtNama.getText());
        karyawan.setAlamat(txtAlamat.getText());
        karyawan.setTglLahir(jdcLahir.getDate());
        if (rdPria.isSelected()){
            karyawan.setJenisKelamin("Laki - Laki");
        }else{
            karyawan.setJenisKelamin("Perempuan");
        }

        if(!txtFoto.getText().equals("")){
            ObjectOutputStream objectOutputStream=null;
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            try {
                objectOutputStream = new ObjectOutputStream(outputStream);
                ImageIcon icon = new ImageIcon(image);
                objectOutputStream.writeObject(icon);
                objectOutputStream.flush();
            } catch (IOException ex) {
                Logger.getLogger(FrameKaryawan.class.getName()).log(Level.SEVERE, null, ex);
            }
            karyawan.setFoto(outputStream.toByteArray());
        }
        Koneksi.getKaryawanDao().update(karyawan);
        loadData();
        clear();
    }

Untuk tombol hapus atau btnHapus kodenya seperti ini.

 private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) {
        Koneksi.getKaryawanDao().delete(karyawan);
        loadData();
        clear();
    }

Sedangkan untuk tombol Batal, cukup panggil method clear saja.

private void btnBersihActionPerformed(java.awt.event.ActionEvent evt) {
        clear();
    }

Kemudian tambahkan pada constructor, event ketika JTable diklik maka data karyawan yang diklik akan tampil pada semua komponen seperti textfield, radiobutton dan yang lainnya.

public FrameKaryawan() {
        initComponents();
        buttonGroup1.add(rdPria);
        buttonGroup1.add(rdPerempuan);
        model = new TableModelKaryawan();
        jTable1.setModel(model);
        karyawans = new ArrayList();
        loadData();
        jTable1.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            public void valueChanged(ListSelectionEvent lse) {
                int row = jTable1.getSelectedRow();
                if (row !=-1){
                    karyawan = model.get(row);
                    txtNama.setText(karyawan.getNama());
                    txtAlamat.setText(karyawan.getAlamat());
                    jdcLahir.setDate(karyawan.getTglLahir());
                    if (karyawan.getJenisKelamin().equalsIgnoreCase("Laki - Laki")){
                        rdPria.setSelected(true);
                    }else{
                        rdPerempuan.setSelected(true);
                    }
                    if (karyawan.getFoto()!=null){
                        try {
                            ObjectInputStream inputStream = new ObjectInputStream(new ByteArrayInputStream(model.get(row).getFoto()));
                            ImageIcon icon  =  (ImageIcon) inputStream.readObject();
                            image = icon.getImage();
                            panelGambar1.setImage(image);
                            inputStream.close();
                        } catch (ClassNotFoundException ex) {
                            Logger.getLogger(FrameKaryawan.class.getName()).log(Level.SEVERE, null, ex);
                        } catch (IOException ex) {
                            Logger.getLogger(FrameKaryawan.class.getName()).log(Level.SEVERE, null, ex);
                        }

                    }
                }
                btnUbah.setEnabled(true);
                btnHapus.setEnabled(true);
                btnSimpan.setEnabled(false);
            }
        });
    }

Coba compile dan jalankan aplikasi tersebut, jika tidak ada error, maka hasinya akan seperti ini.

Untuk file latihannya dapat didownload disini.

Semoga Bermanfaat 😀

Comments on: "Menyimpan Gambar ke dalam Database (Java)" (111)

  1. mas bisa liat database nya ga ?
    type gambar dalam databae nya apa ?
    makasih

    • type gambar yang digunakan adalah blob.

      CREATE TABLE Karyawan(
      id int PRIMARY KEY AUTO_INCREMENT,
      nama VARCHAR(50) NOT NULL,
      alamat VARCHAR(100) NOT NULL,
      jenisKelamin VARCHAR(15) NOT NULL,
      tglLahir DATE,
      foto BLOB);
      

  2. gan, utk nampung image itu pke panel biasa atau panel khusus ??

  3. mas saya bisa menampilkan gambar seperti tutorial yang mas kasih tapi adsa permasalahan ketika pembuatan report,report data gambar nya tidak mau muncul tapi ketika data gambar di isi manual bisa di munculkan kira kira gimana ya mas

  4. mas mau tanya itu JPanelnya kok sampai JPanel6 itu buat apa ya,saya lihat gak ada JPanel lg?? mohon bantuannya 🙂

  5. mas…, tanya nie….,
    q dah melakukan langkah2 seperti di atas, tp kenapa gambarnya ga muncul ya…., q pake jinternalframe
    terimakasih

  6. ngambil panelGambar dari frameKaryawan gimana ya ?

  7. mas … panelGambar1.setImage(image); d tmpatq g’ bisa, ada tmbahan source yg lain jga y ?

  8. link download nya error mas…

  9. maaf mas, masih belum mau, hehe..

  10. Desvianus said:

    ‘Save Images.rar’ is unavailable. File ini tidak lagi tersedia karena identik dengan file yang dilarang karena adanya klaim.

  11. mas, file Save Images.rar nya udah diapus ya? gak bisa didownload. mohon upload lagi dong mas. makasih..

  12. Linknya broken bang…!

    Ada link yang baru gak???

    Syukron

    • iya… maaf lagi maintenis… eh maintenance…

      • Link nya dah OK.
        Tapi gak bisa save foto.
        run:
        May 07, 2015 11:07:56 AM arya.dao.impl.KaryawanDaoImpl save
        SEVERE: null
        com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘foto’ at row 1
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2794)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
        at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:39)
        at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:471)
        at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
        at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:321)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6516)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6281)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4872)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4698)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2719)
        at java.awt.Component.dispatchEvent(Component.java:4698)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
        at java.awt.EventQueue.access$300(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:706)
        at java.awt.EventQueue$3.run(EventQueue.java:704)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:720)
        at java.awt.EventQueue$4.run(EventQueue.java:718)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
        ======================================================================
        Kenapa ya?
        Kebesaran gitu ukuran gambarnya?
        padahal cuma 50 KB.

      • tipe kolomnya sudah blob ?

  13. yg di cari2 akhir@ nemu di sini..
    thank bget udh mau berbagi..

    oa ane bgi tips bgi yg mau download tutorial yg ini…
    linknya sih emang agk bermasalah… tpi filenya msih bisa di download..
    caranya klik pada tombol “Tambah Ke Akun Saya” bgi yg udah ad akun 4share..
    trus buka akun anda & klik aj file yg baru di tambhkan…
    nah tinggal download akhirnya…
    moga bermanfaat…

  14. mas bisa minta program ya gak

    biar mudah dipelajari

  15. mas gak bisa di download ni,
    tolong kirim email aja ya projectnya kalo berkanan 🙂

  16. dah bisa mas …
    makasih banyak atas tutorialnya ..

    ini bener – bener bermanfaat buat saya 🙂

    di tunggu tutorial – tutorial selanjutnya

  17. Cara downloadnya, dengan membuat akun di 4shared… lalu cari tombol tambah ke akun saya… login k 4shared.. baru download

  18. mas saya bisa sourcenya sebab gak bisa didownload tlng kirim ke email govindasurya13@gmail.com

  19. om… udh gk bisa di download file latihannya..

    tolong om kirim ke pringgo.prasetyo@gmail.com

    thanks

  20. beeboypralienka said:

    Ga bisa di-donlod gan..
    ‘save images.rar’ is unavailable. File ini tidak lagi tersedia karena identik dengan file yang dilarang karena adanya klaim.

  21. Link nya ditunggu ya gan….

  22. kak nggak bisa downld 😦
    bisa dkirim nggak kak?
    soalnya lagi butuuuuuh bangeeeet,
    kalo bisa, ni email aq melindathesa@gmail.com
    mkasih 🙂

  23. help ajja mas,, linkx g’ berfungsi lagi……riorefaldi@rocketmail.com

  24. “panelGambar1” mas gimana bisa di “setImage” ? adakah source tambahan ?ato di JPanel di olah dulu supaya bisa di “setImage ” ? 😀

  25. Yusticia Rhema said:

    mas. link downloadnya kok error y ??? aku butuh banget soalnya
    terus waktu aku nyoba . panelGambar1.setImage(null); itu gak mau . . Aku bingung maksudnya dari panelGambar1 itu berasal dari FormPanelGambar . apa dr Form Karyawan yang ada panelnya tetapi namanya panelGambar1 ??
    tolong mas. . secepatnya .
    klo boleh juga . ini email saya justinisme77@gmail.com
    Trims mas 🙂

  26. ga bisa di download mas, add to my account juga gi bisa?

  27. upload ulang dong om,butuh banget nih contoh source nya,buat presentasi

  28. Gan mau tanya nih kok yang kodingannya PanelGambar1.setImage(image) erorr ya padahal class PanelGambar nya udah dibikin?

  29. php (pretty hot programmer) said:

    mas.. ini ada yg gak lengkap ya source code nya..? itu method setImage() dari mana sih?

  30. Mas koq error yaa ….
    tampil error seperti ini …

    Nov 16, 2014 1:04:46 AM arya.dao.impl.KaryawanDaoImpl save
    SEVERE: null
    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘foto’ at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3607)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
    at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:39)
    at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:473)
    at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
    at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:323)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:682)
    at java.awt.EventQueue$3.run(EventQueue.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:696)
    at java.awt.EventQueue$4.run(EventQueue.java:694)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

  31. yang bikin saya bingung, dibagian declaration variable ada
    ” private arya.form.PanelGambar panelGambar1; ” bagaimana cara mengaitkan
    panelGambar1 dengan PanelGambar. Saya sudah bikin PanelGambar satu folder dengan Jframe lalu gimana biar PanelGambar bisa terhubung dengan panelGambar1

  32. Hendra Prabowo said:

    thanks ya boss. mau tanya lagi nih seputar error
    saya kan bikin coding online shop
    tapi muncul error, pas saya copy ke laptop temen saya , program saya lancar2 aja
    cuman di laptop saya sajay yang gk error
    ada solusi nggak ya?

    • Tergantung errornya apa dulu.. bisa saja library jar nya ada yang kurang.. tergantung errornya..

      • Hendra Prabowo said:

        saya mencoba menampilkan icon di jlabel,, di laptop saya scriptnya error,
        tetapi di laptop teman saya bisa jalan dengan lancar

        berikut errornya:
        Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
        at javax.swing.ImageIcon.(ImageIcon.java:228)
        at Shop.InsertBarang.jButton1ActionPerformed(InsertBarang.java:318)
        at Shop.InsertBarang.access$1300(InsertBarang.java:14)
        at Shop.InsertBarang$11.actionPerformed(InsertBarang.java:139)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6504)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6269)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4860)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4686)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2713)
        at java.awt.Component.dispatchEvent(Component.java:4686)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
        at java.awt.EventQueue.access$000(EventQueue.java:101)
        at java.awt.EventQueue$3.run(EventQueue.java:666)
        at java.awt.EventQueue$3.run(EventQueue.java:664)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:680)
        at java.awt.EventQueue$4.run(EventQueue.java:678)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

      • Saya coba bantu.. saya rasa ada error pada saat load gambar, karena bisa saja gambar tersebut tidak ada pada lokasi yang dituju. Untuk tambahan referensi bisa cek di http://stackoverflow.com/questions/13151979/null-pointer-exception-when-an-imageicon-is-added-to-jbutton-in-netbeans

  33. Hendra Prabowo said:

    makasi banyak ya mas,,, udah work nie hahahaha

  34. com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘foto’ at row 1
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4118)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2794)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:40)
    at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:472)
    at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
    at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:322)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2739)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
    at java.awt.EventQueue.access$400(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:697)
    at java.awt.EventQueue$3.run(EventQueue.java:691)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:719)
    at java.awt.EventQueue$4.run(EventQueue.java:717)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  35. mas,itu errornya kenapa?dari kemarin saya otak atik di db,program nya msh ga bisa.thankz

  36. Tiara Ratna said:

    Mas mau tanya dong
    punya saya pas dimasukin database null ngga ada isinya mas
    ngga ada pemberitahuan apa apa
    ngga merah merah sama sekali
    kenapa ya mas
    makasi sebelum nya

  37. Rubenson said:

    kang saya error di construttor datanya itu gmna ya ???

  38. Agu 01, 2015 11:46:23 PM app.tlk.view.FrameTrainer$1 valueChanged
    SEVERE: null
    java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2328)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2797)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:802)
    at java.io.ObjectInputStream.(ObjectInputStream.java:299)
    at app.tlk.view.FrameTrainer$1.valueChanged(FrameTrainer.java:88)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:164)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:211)
    at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:405)
    at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:415)
    at javax.swing.DefaultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.java:459)
    at javax.swing.JTable.changeSelectionModel(JTable.java:2389)
    at javax.swing.JTable.changeSelection(JTable.java:2458)
    at javax.swing.plaf.basic.BasicTableUI$Handler.adjustSelection(BasicTableUI.java:1115)
    at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1038)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
    at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    at java.awt.Component.processMouseEvent(Component.java:6522)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4530)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

    Agu 01, 2015 11:46:24 PM app.tlk.view.FrameTrainer$1 valueChanged
    SEVERE: null
    java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2328)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2797)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:802)
    at java.io.ObjectInputStream.(ObjectInputStream.java:299)
    at app.tlk.view.FrameTrainer$1.valueChanged(FrameTrainer.java:88)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:184)
    at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:154)
    at javax.swing.DefaultListSelectionModel.setValueIsAdjusting(DefaultListSelectionModel.java:685)
    at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(BasicTableUI.java:953)
    at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(BasicTableUI.java:1166)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
    at java.awt.Component.processMouseEvent(Component.java:6525)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6290)
    at java.awt.Container.processEvent(Container.java:2234)
    at java.awt.Component.dispatchEventImpl(Component.java:4881)
    at java.awt.Container.dispatchEventImpl(Container.java:2292)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
    at java.awt.Container.dispatchEventImpl(Container.java:2278)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4703)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

  39. Itu error knp ya bro? Bingung saya…. Mohon pencerahannya donk… Hehehehe

  40. Mas aq coba error di panelgambar1

  41. mas bukannya tipe data gambar pada database nya itu pakai mediumBlob ?

  42. Sipp gan tutorialnya, sangat membantu 🙂

  43. Reyta Bonita said:

    Mas mau tanya
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.MediaTracker;
    import java.util.logging.Level;
    import java.util.logging.Logger;

    itu nama librarynya apa? hehehe maaf saya pemula ini di java mas, soalnya library itu belum ada di komputer saya.
    mohon dijawab ya mas, terima kasih 🙂

  44. ini error pada saat saya mengeklik tombol simpan,, ini kenapa ya??

    run:
    10 Feb 16 12:13:12 arya.dao.impl.KaryawanDaoImpl save
    SEVERE: null
    com.mysql.jdbc.PacketTooBigException: Packet for query is too large (4231000 > 1048576). You can change this value on the server by setting the max_allowed_packet’ variable.
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3248)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1940)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2409)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2327)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2312)
    at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:39)
    at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:471)
    at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
    at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:321)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6288)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    at java.awt.Component.processEvent(Component.java:6053)
    at java.awt.Container.processEvent(Container.java:2041)
    at java.awt.Component.dispatchEventImpl(Component.java:4651)
    at java.awt.Container.dispatchEventImpl(Container.java:2099)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    at java.awt.Container.dispatchEventImpl(Container.java:2085)
    at java.awt.Window.dispatchEventImpl(Window.java:2478)
    at java.awt.Component.dispatchEvent(Component.java:4481)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    at java.awt.EventQueue$2.run(EventQueue.java:616)
    at java.awt.EventQueue$2.run(EventQueue.java:614)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

  45. gan mau tanya ni,saya udah bikin upload gambar tapi gambarnya ga keluar ya,

  46. Mas, Tolong Dibantu saya telah coba aplikasi yg mas buat menurut saya bagus tapi kok saat selesai di input dan foto jga sdh ready dimasukan saat menekan tombol “Simpan” Muncul Pesan Error
    mohon bantu di analisis bug nya

    com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1263803 > 1048576). You can change this value on the server by setting the max_allowed_packet’ variable.
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3798)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2484)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2794)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
    at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:39)
    at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:471)
    at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
    at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:321)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

  47. untuk ukuran gambar sdh = 45,6 KB (46.706 bytes)

  48. gan gmn kalo errornya gni,,, butuh pencerahan 🙂

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:37)
    at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:471)
    at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
    at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:321)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.awt.EventQueue$4.run(EventQueue.java:718)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

  49. Pas klik simpan eror ini knp ya?? mhon bantuannya 🙂

    Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
    at arya.dao.impl.KaryawanDaoImpl.save(KaryawanDaoImpl.java:37)
    at arya.form.FrameKaryawan.btnSimpanActionPerformed(FrameKaryawan.java:471)
    at arya.form.FrameKaryawan.access$1500(FrameKaryawan.java:40)
    at arya.form.FrameKaryawan$3.actionPerformed(FrameKaryawan.java:321)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6516)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3312)
    at java.awt.Component.processEvent(Component.java:6281)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4872)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4698)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)
    at java.awt.EventQueue.access$300(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:706)
    at java.awt.EventQueue$3.run(EventQueue.java:704)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:720)
    at java.awt.EventQueue$4.run(EventQueue.java:718)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

  50. mas,gimana caranya gambar dari databases muncul didalam jtabelnya. bukan muncul di jpanel

  51. mas,gimana cara gambarnya muncul ditabel?

  52. itu masih blom sempurna mas
    seharusnya kalo isinya nggk lengkap nggk bisa atau “Mohon Maaf Data Anda Belom Lengkap, Mohon Diisi Kembali”
    bisa nggk gan di gituin..?

  53. Mahendra Candi said:

    Terimakasih mas… akhirnya bisa running, walaupun sempat bingung di panelGambar1.setImage.
    Ternyata panelGambar1 tersebut harus di drag dari class panelGambar.
    Btw mohon izin mas, buat saya terapkan simpan dan tampil gambarnya di projek saya 😀
    Thanks!

  54. Taehyung said:

    gan mau tanya, kalau tipe datanya pake mediumblob, source codenya sama tidak?

  55. mas
    bisa kah saya minta file lengkap proyek ini?
    trimaksih

  56. imam maulana said:

    thanks banget gan buat tutorialnya, aplikasinya udah saya download, tapi sayang ada sedikit kesalahan pada Resolve Project Problems saat add jar jcalendar, junit, junit_4 tidak dapat di resolve
    thanks before

Leave a reply to idris Cancel reply