Last active
December 11, 2015 21:28
-
-
Save nugraha16/4662402 to your computer and use it in GitHub Desktop.
Membuat Table Dinamis di Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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