Skip to content

Instantly share code, notes, and snippets.

@nugraha16
Last active December 11, 2015 21:28
Show Gist options
  • Save nugraha16/4662402 to your computer and use it in GitHub Desktop.
Save nugraha16/4662402 to your computer and use it in GitHub Desktop.
Membuat Table Dinamis di Java
package kearsipansurat;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import java.awt.*;
import java.awt.event.*;
import com.jtattoo.plaf.acryl.*;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
//@Anugrah Bagus Susilo
public class MasterStaffTU extends JFrame implements ActionListener,MouseListener{
Dimension Layar = Toolkit.getDefaultToolkit().getScreenSize();
private JLabel lblIDStaff = new JLabel("ID Staff");
private JTextField txtIDStaff = new JTextField(20);
private JLabel lblNmStaff = new JLabel("Nama Staff");
private JTextField txtNmStaff = new JTextField(20);
private JLabel lblJabatan = new JLabel("Jabatan");
private String[] arrJabatan = {"--Pilih--","Penyiap Bahan Koordinasi Anggaran","Pengumpul dan Pengolah Data","Pengelola Keuangan","Pembuat Daftar Gaji","Penatausaha Perlengkapan","Pengagenda Surat Masuk dan Keluar","Pengemudi","Pengeekspedisi dan Pengagenda Naskah"};
private JComboBox cmbJabatan = new JComboBox(arrJabatan);
private JLabel lblGolongan = new JLabel("Golongan");
private String[] arrGol = {"--Pilih--","I-A","I-B","I-C","I-D","II-A","II-B","II-C","II-D","III-A","III-B","III-C","III-D","IV-A","IV-B","IV-C","IV-D","IV-E"};
private JComboBox cmbGolongan = new JComboBox(arrGol);
private JLabel lblTelp = new JLabel("Telp Staff");
private JTextField txtTelp = new JTextField(20);
private JLabel lblgambar = new JLabel(new ImageIcon("src/image/user-new-3.png"));
private JButton btnBaru = new JButton("Tambah",new ImageIcon("src/image/baru.jpeg"));
private JButton btnUbah = new JButton("Ubah",new ImageIcon("src/image/edit.jpeg"));
private JButton btnHapus = new JButton("Hapus",new ImageIcon("src/image/hapus.jpeg"));
private JButton btnKeluar = new JButton("Keluar",new ImageIcon("src/image/close.jpeg"));
private JLabel gambar = new JLabel(new ImageIcon("src/image/background.png"));
//header table
private String[] JdlTabel = {"IDStaff","NmStaff","Jabatan","Golongan","Telp"};
DefaultTableModel tabModel;
JTable tabel = new JTable();
JScrollPane scrTabel = new JScrollPane();
//Methods Declarations
public MasterStaffTU(){
super("::[[Entry Data Staff TU]]::");
setIconImage(getToolkit().getImage("src/image/user-group.png")); //memberikan icon di favicon
setSize(550,420); //mengatur skala lebar 550 dan tinggi 420 form
setVisible(true); //membuat form visible
getContentPane().setLayout(null); //menambahkan form ke dalam layout
setLocationRelativeTo(null); // mmebuat form berada di tengah-tengah
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
//<----Membuat Table----->
tabModel = new DefaultTableModel(null,JdlTabel);
tabel.setModel(tabModel);
scrTabel.getViewport().add(tabel);
tabel.setEnabled(true);
scrTabel.setBounds(10, 210, 510, 120);
getContentPane().add(scrTabel);
//<----Membuat Field----->
lblIDStaff.setBounds(10,30,120,20); //mengatur skala label ID Staff (x,y,width,height)
lblIDStaff.setForeground(Color.white); //memberikan warna foreground putih
getContentPane().add(lblIDStaff); //memasukan label kedalam layout
txtIDStaff.setBounds(150,30,120,20);
txtIDStaff.setEnabled(false);
getContentPane().add(txtIDStaff);
lblgambar.setBounds(380,20,128,128);
getContentPane().add(lblgambar);
lblNmStaff.setBounds(10,60,120,20);
lblNmStaff.setForeground(Color.white);
getContentPane().add(lblNmStaff);
txtNmStaff.setBounds(150,60,150,20);
getContentPane().add(txtNmStaff);
lblJabatan.setBounds(10,90,120,20);
lblJabatan.setForeground(Color.white);
getContentPane().add(lblJabatan);
cmbJabatan.setBounds(150,90,220,20);
getContentPane().add(cmbJabatan);
lblGolongan.setBounds(10,120,120,20);
lblGolongan.setForeground(Color.white);
getContentPane().add(lblGolongan);
cmbGolongan.setBounds(150,120,65,20);
getContentPane().add(cmbGolongan);
lblTelp.setBounds(10,150,120,20);
lblTelp.setForeground(Color.white);
getContentPane().add(lblTelp);
txtTelp.setBounds(150,150,120,20);
getContentPane().add(txtTelp);
//<---------Membuat button----------->
btnBaru.setBounds(10,340,100,30);
getContentPane().add(btnBaru);
btnUbah.setBounds(110,340,100,30);
getContentPane().add(btnUbah);
btnHapus.setBounds(210,340,110,30);
getContentPane().add(btnHapus);
btnKeluar.setBounds(320,340,115,30);
getContentPane().add(btnKeluar);
gambar.setBounds(0,0,getWidth(),getHeight());
getContentPane().add(gambar);
btnBaru.addActionListener(this);
btnUbah.addActionListener(this);
btnHapus.addActionListener(this);
btnKeluar.addActionListener(this);
tabel.addMouseListener(this);
TampilkeTabel(); //meload data di table saat form pertamakali dibuka
autonumber(); //meload data autonumber saat form pertamakali dibuka
}
/*public String autoNomer(String tabel,String strAwal,Integer pnj){
String auto="";
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/kearsipansurat", "root", "root");
java.sql.Statement stat=con.createStatement();
ResultSet rs=stat.executeQuery("select * from "+tabel);
rs.last();
String s,s1;
Integer j;
s=Integer.toString(rs.getRow()+1);
j=s.length();
s1="";
for(int i = 1;i<=pnj-j;i++){
s1=s1+"0";
}
rs.close();
stat.close();
auto=strAwal+s1+s;
}catch(Exception e){
System.out.println("Pesan Error : "+e);
JOptionPane.showMessageDialog(null,"Maaf, Query tidak bisa dijalankan...!!!!");
}
return auto;
}*/
void autonumber(){ //membuat method autonumber
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/kearsipansurat", "root", "root");
Statement state = con.createStatement();
String sql = "select max(right(IdStaff,4)) as no_terakhir from StaffTU ";
ResultSet rs = state.executeQuery(sql);
if(rs.first()==false)
{
txtIDStaff.setText("TU0001");
}
else{
rs.last();
int no=rs.getInt(1)+1;
String cno=String.valueOf(no);
int pjg_cno=cno.length();
for(int i=0;i<2 - pjg_cno; i++);
{
cno="000"+cno;
}
txtIDStaff.setText("TU"+cno);
}
rs.close();
con.close();
}
catch(Exception ex){
}
}
void TampilkeTabel(){ //method tampilke table
try{
hapusTabel();
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/kearsipansurat", "root", "root");
Statement state = con.createStatement();
String sql = "select * from StaffTU";
ResultSet rs = state.executeQuery(sql);
while(rs.next())
{
String IDStaff = rs.getString(1);
String NmStaff = rs.getString(2);
String Jabatan = rs.getString(3);
String Golongan = rs.getString(4);
String Telp = rs.getString(5);
String[] data = {IDStaff,NmStaff,Jabatan,Golongan,Telp};
tabModel.addRow(data);
sesuaikanKolom();
autonumber();
Kosong();
}
rs.close();
con.close();
}
catch(Exception ex){
}
}
void getDataTabel(){ //method mendapatkan data table
txtIDStaff.setText(""+tabModel.getValueAt(tabel.getSelectedRow(),0));
txtNmStaff.setText(""+tabModel.getValueAt(tabel.getSelectedRow(),1));
cmbJabatan.setSelectedItem(""+tabModel.getValueAt(tabel.getSelectedRow(),2));
cmbGolongan.setSelectedItem(""+tabModel.getValueAt(tabel.getSelectedRow(),3));
txtTelp.setText(""+tabModel.getValueAt(tabel.getSelectedRow(),4));
}
void hapusTabel(){
int brs = tabModel.getRowCount();
for(int i=0;i<brs;i++){
tabModel.removeRow(0);
}
}
void sesuaikanKolom() {
//cara untuk menyesuaikan kolom dari tabel adalah mengambil
// lebar kolom yang ada kemudian sesuaikan
TableColumnModel modelKolom = tabel.getColumnModel();
for (int kol = 0; kol < modelKolom.getColumnCount(); kol++) {
int lebarKolomMax = 0;
for (int baris = 0; baris < tabel.getRowCount(); baris++) {
TableCellRenderer rend = tabel.getCellRenderer(baris, kol);
Object nilaiTablel = tabel.getValueAt(baris, kol);
Component comp = rend.getTableCellRendererComponent(tabel, nilaiTablel, false, false, baris, kol);
lebarKolomMax = Math.max(comp.getPreferredSize().width, lebarKolomMax);
}//akhir for baris
TableColumn kolom = modelKolom.getColumn(kol);
kolom.setPreferredWidth(lebarKolomMax);
}//akhir for kolom
}
void Tambah(){ //method menambahkan data
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/kearsipansurat","root","root");
Statement st = con.createStatement();
String sql = "insert into StaffTU values('"+txtIDStaff.getText()+
"','"+txtNmStaff.getText()+
"','"+cmbJabatan.getSelectedItem()+
"','"+cmbGolongan.getSelectedItem()+
"','"+txtTelp.getText()+
"')";
int hasil = st.executeUpdate(sql);
if(hasil>0)
JOptionPane.showMessageDialog(null,"Data berhasil di tambah","Pesan",JOptionPane.INFORMATION_MESSAGE);
con.close();
TampilkeTabel();
//Kosong();*/
}
catch(Exception ex){
JOptionPane.showConfirmDialog(null, "Data gagal di tambah");
}
}
void Ubah(){ //method mengubah data
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost/kearsipansurat","root", "root");
Statement state = con.createStatement();
String sql = "update StaffTU set NamaStaff='"+txtNmStaff.getText()+
"',Jabatan ='"+cmbJabatan.getSelectedItem()+
"',Golongan ='"+cmbGolongan.getSelectedItem()+
"',TelpStaff ='"+txtTelp.getText()+
"'where IDStaff ='"+txtIDStaff.getText()+"'";
int vHasil = state.executeUpdate(sql);
if(vHasil==0)
JOptionPane.showMessageDialog(null, "Data berhasil di Ubah", "Pesan", JOptionPane.INFORMATION_MESSAGE);
con.close();
TampilkeTabel();
}
catch(Exception ex){
JOptionPane.showConfirmDialog(null, "Data gagal di ubah");
}
}
void Hapus(){ //method menghapus data
try{
String className = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost/kearsipansurat";
String user = "root";
String password = "root";
Class.forName(className).newInstance();
Connection koneksi = DriverManager.getConnection(url, user, password);
Statement state = koneksi.createStatement();
String query = "delete from StaffTU where IDStaff = '"+txtIDStaff.getText()+"'";
int Result = state.executeUpdate(query);
if(Result==1){
JOptionPane.showConfirmDialog(null, "Data berhasil di hapus");
TampilkeTabel();
koneksi.close();
Kosong();
}
}catch (Exception e) {
JOptionPane.showConfirmDialog(null, "Data gagal di hapus");
}
}
void Kosong(){ //method membersihkan data
txtNmStaff.setText("");
cmbJabatan.setSelectedIndex(0);
cmbGolongan.setSelectedIndex(0);
txtTelp.setText("");
}
@Override
public void mouseClicked(MouseEvent arg0) {
getDataTabel(); //mendapatkan data saat table di klik
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseReleased(MouseEvent arg0) {
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnBaru){
Tambah();
}
if(e.getSource() == btnUbah){
Ubah();
}
if(e.getSource() == btnHapus){
Hapus();
}
if(e.getSource() == btnKeluar){
try {
int reply = JOptionPane.showConfirmDialog (this,
"Yakin Mau Keluar?",
"Sistem - Keluar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (reply == JOptionPane.YES_OPTION) {
setVisible (false); //Menyembunyikan Frame.
dispose(); //Membersihkan Resource dari system memori
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Membebaskan aplikasi dari memori
//System.exit (0); //Keluar dari Aplikasi.
}
}
catch (Exception ex) {
}
}
}
public static void main(String [] args){ //untuk mengeksekusi form
try{
UIManager.setLookAndFeel(new AcrylLookAndFeel()); //memberikan tampilan seperti macintos
}
catch (UnsupportedLookAndFeelException e){
}
new MasterStaffTU();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment