Selamat siang,
Kali ini saya menulis artikel tentang menampilkan & filter data dari database ke JTable dengan menggunakan Hibernate Framework, artikel ini adalah lanjutan dari artikel Artikel Part 1 , teman-teman yang sudah mencoba artikel saya yang pertama tinggal modifikasi project dari artikel saya yang pertama saja Artikel Part 1
Langkah 1 : Mofikasi Tampilan FormCRUD yang pernah di buat di artikel sebelumnya
Langkah 2 : Di package util buat file baru dengan nama JTableHandler.java
File : JTableHandler.java
Langkah 3 : Modifikasi Kode Program FormCRUD
Modifikasi File FormCRUD.Java
Langkah 4 : Silahkan coba jalankan FormCRUD
Kali ini saya menulis artikel tentang menampilkan & filter data dari database ke JTable dengan menggunakan Hibernate Framework, artikel ini adalah lanjutan dari artikel Artikel Part 1 , teman-teman yang sudah mencoba artikel saya yang pertama tinggal modifikasi project dari artikel saya yang pertama saja Artikel Part 1
Langkah 1 : Mofikasi Tampilan FormCRUD yang pernah di buat di artikel sebelumnya
Langkah 2 : Di package util buat file baru dengan nama JTableHandler.java
File : JTableHandler.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package util;
import entity.Karyawan;
import java.util.Iterator;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
/**
*
* @author kurnia_syukur
*/
public class JTableHandler {
public void fillGrid(JTable table,String kriteria) {
DefaultTableModel model = (DefaultTableModel) table.getModel();
model.getDataVector().removeAllElements();
try {
new SchemaBuilder().build();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
System.out.println("oke");
try {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
//Query q = s.createQuery("from Karyawan");
//List listContact = q.list();
Criteria c = s.createCriteria(Karyawan.class);
c.add(Restrictions.like("nama", "%"+kriteria+"%"));
List list = c.list();
Iterator i = list.iterator();
while (i.hasNext()) {
Karyawan k = (Karyawan) i.next();
Object[] o = new Object[]{k.getNik(),k.getNama(),k.getAlamat()};
model.addRow(o);
}
} catch (HibernateException e) {
JOptionPane.showMessageDialog(null, e);
}
}
}
Langkah 3 : Modifikasi Kode Program FormCRUD
Modifikasi File FormCRUD.Java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package cobahibernate;
import entity.Karyawan;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import util.JTableHandler;
import util.SchemaBuilder;
/**
*
* @author kurniasyukur
*/
/*PENAMBAHAN 1 : Implemet KeyListener*/
public class FormCRUD extends javax.swing.JFrame implements KeyListener{
/**
* Creates new form FormCRUD
*/
/*PENAMBAHAN 2 : MEMBUAT INSTANCE DARI CLASS JTableHandler*/
private JTableHandler tableHandler = new JTableHandler();
public FormCRUD() {
initComponents();
/*PENAMBAHAN 3*/
txtKriteria.addKeyListener(this);
/*PENAMBAHAN 4*/
tableHandler.fillGrid(tblKaryawan,"");
}
/**
* 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.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
txtNik = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
txtNama = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
txtAlamat = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
tbnSimpan = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tblKaryawan = new javax.swing.JTable();
txtKriteria = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("Nik");
jLabel2.setText("Nama");
jLabel3.setText("Alamat");
tbnSimpan.setText("Simpan");
tbnSimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
tbnSimpanActionPerformed(evt);
}
});
tblKaryawan.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null},
{null, null, null},
{null, null, null},
{null, null, null}
},
new String [] {
"NIK", "NAMA", "ALAMAT"
}
) {
boolean[] canEdit = new boolean [] {
false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane1.setViewportView(tblKaryawan);
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel4.setText("CARI(Berdasarkan Nama)");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(txtKriteria, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel3, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtNik, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtAlamat, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtNama, javax.swing.GroupLayout.PREFERRED_SIZE, 151, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(tbnSimpan)
.addGap(18, 18, 18))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(34, 34, 34)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel1)
.addComponent(txtNik, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(3, 3, 3))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtKriteria, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(5, 5, 5)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtNama, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(txtAlamat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(tbnSimpan)
.addGap(0, 162, Short.MAX_VALUE))
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
.addContainerGap())
);
pack();
}//
private void tbnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try {
try {
new SchemaBuilder().build();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
Karyawan k = new Karyawan(txtNik.getText(), txtNama.getText(), txtAlamat.getText());
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session s = sf.openSession();
s.beginTransaction();
s.saveOrUpdate(k);
s.getTransaction().commit();
sf.close();
JOptionPane.showMessageDialog(null, "tersimpan");
/*PENAMBAHAN 5*/
tableHandler.fillGrid(tblKaryawan,txtKriteria.getText());
clearForm();
} catch (HibernateException e) {
JOptionPane.showMessageDialog(null, e.getMessage());
}
}
void clearForm(){
txtNik.setText("");
txtNama.setText("");
txtAlamat.setText("");
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(FormCRUD.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FormCRUD().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable tblKaryawan;
private javax.swing.JButton tbnSimpan;
private javax.swing.JTextField txtAlamat;
private javax.swing.JTextField txtKriteria;
private javax.swing.JTextField txtNama;
private javax.swing.JTextField txtNik;
// End of variables declaration
@Override
public void keyTyped(KeyEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void keyPressed(KeyEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
/*PENAMBAHAN 6*/
@Override
public void keyReleased(KeyEvent e) {
//throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
Object source = e.getSource();
int keyCode = e.getKeyCode();
if (source.equals(txtKriteria)) {
if ((keyCode >= 65 && keyCode <= 90)
|| (keyCode >= 48 && keyCode <= 57)
|| (keyCode == 8)) {
tableHandler.fillGrid(tblKaryawan, txtKriteria.getText());
}
}
}
}
Langkah 4 : Silahkan coba jalankan FormCRUD
test
ReplyDelete