Design FORM
Database di XAMPP
Coding di Java Class
package datamhs;
import java.sql.Connection;
import java.sql.DriverManager;
public class Datamhs {
private static Connection connect;
public static Connection getConnection() {
try {
String url = "jdbc:mysql://localhost:3307/dbmhs";
String user = "root";
String pass = "";
Class.forName("com.mysql.jdbc.Driver");
connect = DriverManager.getConnection(url, user, pass);
System.out.println("Koneksi berhasil");
} catch (Exception ex) {
System.out.println("Koneksi gagal " + ex.getMessage());
return connect;
public static void main(String[] args) {
// TODO code application logic here
new javagui2().setVisible(true);
Coding di Jframe Form di Source
package datamhs;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import java.text.SimpleDateFormat;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class javagui2 extends javax.swing.JFrame {
DefaultTableModel data = new DefaultTableModel();
boolean tombol = false;
public javagui2() {
initComponents();
data.addColumn("NPM");
data.addColumn("Nama");
data.addColumn("Tanggal_Lahir");
data.addColumn("Prodi");
data.addColumn("Tahun");
data.addColumn("Kelamin");
tampildataketabel();
private void tampildataketabel(){
data.setRowCount(0);
try {
ResultSet rs = Datamhs.getConnection().prepareStatement("SELECT * FROM
tabelmhs").executeQuery();
while(rs.next()){
data.addRow(new Object[]{
rs.getString(1),
rs.getString(2),
rs.getString(3),
rs.getString(4),
rs.getString(5),
rs.getString(6)
});
}
rs.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Terjadi Kesalahan " + ex.getMessage());
} finally {
tblMahasiswa.setModel(data);
private void aktifkan(boolean x){
txtNpm.setEditable(x);
txtNama.setEditable(x);
cboProdi.setEnabled(x);
spntgl.setEnabled(x);
rdbPria.setEnabled(x);
rdbWanita.setEnabled(x);
txtTahun.setEditable(x);
btnTambah.setEnabled(!x);
btnEdit.setEnabled(!x);
btnSimpan.setEnabled(x);
btnBatal.setEnabled(x);
btnHapus.setEnabled(!x);
tblMahasiswa.setEnabled(!x);
private void kosongkan(){
txtNpm.setText("");
txtNama.setText("");
cboProdi.setSelectedIndex(-1);
txtTahun.setText("");
buttonGroup1.clearSelection();
txtNpm.requestFocus();
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jLabel6 = new javax.swing.JLabel();
txtTahun = new javax.swing.JTextField();
btnTambah = new javax.swing.JButton();
btnEdit = new javax.swing.JButton();
btnSimpan = new javax.swing.JButton();
btnBatal = new javax.swing.JButton();
btnHapus = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tblMahasiswa = new javax.swing.JTable();
jLabel1 = new javax.swing.JLabel();
txtNpm = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
txtNama = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
cboProdi = new javax.swing.JComboBox<>();
jLabel5 = new javax.swing.JLabel();
rdbPria = new javax.swing.JRadioButton();
rdbWanita = new javax.swing.JRadioButton();
spntgl = new javax.swing.JSpinner();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentShown(java.awt.event.ComponentEvent evt) {
formComponentShown(evt);
}
});
jLabel6.setText("Tahun Masuk :");
btnTambah.setText("Tambah");
btnTambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTambahActionPerformed(evt);
});
btnEdit.setText("Ubah");
btnEdit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnEditActionPerformed(evt);
});
btnSimpan.setText("Simpan");
btnSimpan.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnSimpanActionPerformed(evt);
});
btnBatal.setText("Batal");
btnBatal.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBatalActionPerformed(evt);
});
btnHapus.setText("Hapus");
btnHapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnHapusActionPerformed(evt);
});
tblMahasiswa.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{},
{},
{},
{}
},
new String [] {
));
jScrollPane1.setViewportView(tblMahasiswa);
jLabel1.setText("NPM :");
jLabel2.setText("Nama :");
jLabel4.setText("Program Studi :");
jLabel5.setText("Jenis Kelamin :");
buttonGroup1.add(rdbPria);
rdbPria.setText("Pria");
buttonGroup1.add(rdbWanita);
rdbWanita.setText("Wanita");
spntgl.setModel(new javax.swing.SpinnerDateModel(new java.util.Date(), null, new
java.util.Date(), java.util.Calendar.DAY_OF_MONTH));
spntgl.setBorder(javax.swing.BorderFactory.createTitledBorder("Tanggal Lahir:"));
spntgl.setEditor(new javax.swing.JSpinner.DateEditor(spntgl, "dd/MM/yyyy"));
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)
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(rdbPria)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(rdbWanita))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cboProdi, javax.swing.GroupLayout.PREFERRED_SIZE, 109,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtTahun, javax.swing.GroupLayout.PREFERRED_SIZE, 82,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING
)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(txtNama, javax.swing.GroupLayout.PREFERRED_SIZE, 214,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtNpm, javax.swing.GroupLayout.PREFERRED_SIZE, 79,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(18, 18, 18)
.addComponent(spntgl, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(0, 105, Short.MAX_VALUE)))
.addContainerGap())
.addGroup(layout.createSequentialGroup()
.addGap(64, 64, 64)
.addComponent(btnTambah)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnEdit)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnSimpan)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnBatal)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnHapus)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(txtNpm, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(txtNama, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGap(1, 1, 1)
.addComponent(spntgl, javax.swing.GroupLayout.PREFERRED_SIZE, 45,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(10, 10, 10)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel4)
.addComponent(cboProdi, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6)
.addComponent(txtTahun, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(rdbPria)
.addComponent(jLabel5)
.addComponent(rdbWanita))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(btnTambah)
.addComponent(btnEdit)
.addComponent(btnSimpan)
.addComponent(btnBatal)
.addComponent(btnHapus))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 135,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
pack();
setLocationRelativeTo(null);
}// </editor-fold>
private void formComponentShown(java.awt.event.ComponentEvent evt) {
DefaultComboBoxModel model = new DefaultComboBoxModel();
model.addElement("Sistem Informasi");
model.addElement("Informatika");
model.addElement("Bisnis Digital");
model.addElement("Manajemen");
model.addElement("Akuntansi");
model.addElement("Bahasa Inggris");
cboProdi.setModel(model);
aktifkan(false);
private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {
aktifkan(true);
tombol = true;
kosongkan();
private void btnEditActionPerformed(java.awt.event.ActionEvent evt) {
int baris = tblMahasiswa.getSelectedRow();
String npm = tblMahasiswa.getValueAt(baris, 0).toString();
if(baris < 0) {
JOptionPane.showMessageDialog(this, "Pilih Data Dulu !");
} else {
try{
ResultSet rs = Datamhs.getConnection().
prepareStatement("SELECT * FROM tabelmhs WHERE npm= '" + npm + "'").executeQuery();
if(rs.next()){
txtNpm.setText(npm);
txtNama.setText(rs.getString(2));
spntgl.setValue(rs.getDate("tgllahir"));
cboProdi.setSelectedItem(rs.getString(4));
txtTahun.setText(rs.getString(5));
if(rs.getString(6).equals("Pria")) {
rdbPria.setSelected(true);
} else {
rdbWanita.setSelected(true);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Terjadi Kesalahan" + ex);
tombol = false;
aktifkan(true);
private void btnSimpanActionPerformed(java.awt.event.ActionEvent evt) {
String npm = txtNpm.getText();
String nama = txtNama.getText();
Date tgllahir = (Date) spntgl.getValue();
SimpleDateFormat tglsql = new SimpleDateFormat("yyyy/MM/dd");
String prodi = cboProdi.getSelectedItem().toString();
String tahun = txtTahun.getText();
String jk = rdbPria.isSelected() ? "Pria" : "Wanita";
if(tombol&&!npm.isEmpty()) {
// mulai proses cek redudansi data
try {
ResultSet rs = Datamhs.getConnection().
prepareStatement("SELECT * FROM tabelmhs WHERE npm = '" + npm + "'").
executeQuery();
if(rs.next()){
JOptionPane.showMessageDialog(this, "NPM sudah terdaftar");
txtNpm.requestFocus();
return;
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Terjadi kesalahan" + ex.getMessage());
} // akhir dari proses pengecekan redudansi data
try { // mulai proses INSERT INTO tabelmhs
PreparedStatement ps = Datamhs.getConnection().
prepareStatement("INSERT INTO tabelmhs VALUES (?, ?, ?, ?, ?, ?)");
ps.setString(1, npm);
ps.setString(2, nama);
ps.setString(3, tglsql.format(tgllahir));
ps.setString(4, prodi);
ps.setString(5, tahun);
ps.setString(6, jk);
ps.executeUpdate();
ps.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Data gagal simpan" + ex.getMessage());
} finally {
tampildataketabel();
} else {
try { // mulai proses UPDATE tabelmhs
npm = tblMahasiswa.getValueAt(tblMahasiswa.getSelectedRow(), 0).toString();
PreparedStatement ps = Datamhs.getConnection().
prepareStatement("UPDATE tabelmhs SET npm=?, nama=?, tgllahir=?, prodi=?, thnmasuk=?,
jk=? WHERE" + " npm=?");
ps.setString(1, txtNpm.getText());
ps.setString(2, nama);
ps.setString(3, tglsql.format(tgllahir));
ps.setString(4, prodi);
ps.setString(5, tahun);
ps.setString(6, jk);
ps.setString(7, npm);
ps.executeUpdate();
ps.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Data gagal diubah" + ex.getMessage());
} finally {
tampildataketabel();
kosongkan();
aktifkan(false);
private void btnBatalActionPerformed(java.awt.event.ActionEvent evt) {
aktifkan(false);
kosongkan();
private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) {
int baris = tblMahasiswa.getSelectedRow();
if(baris < 0) {
JOptionPane.showMessageDialog(this, "Pilih Data Dulu !");
} else {
if(JOptionPane.showConfirmDialog(this, "Yakin Hapus ?", "Hapus Data",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) ==
JOptionPane.YES_OPTION) {
String npm = tblMahasiswa.getValueAt(tblMahasiswa.getSelectedRow(), 0).toString();
try {
PreparedStatement ps = Datamhs.getConnection().prepareStatement("DELETE FROM
tabelmhs WHERE npm = '" + npm + "'");
ps.executeUpdate();
ps.close();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(this, "Data gagal dihapus" + ex.getMessage());
} finally {
tampildataketabel();
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* 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(javagui2.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(javagui2.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(javagui2.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(javagui2.class.getName()).log(java.util.logging.Level.SEVERE,
null, ex);
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
});
// Variables declaration - do not modify
private javax.swing.JButton btnBatal;
private javax.swing.JButton btnEdit;
private javax.swing.JButton btnHapus;
private javax.swing.JButton btnSimpan;
private javax.swing.JButton btnTambah;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JComboBox<String> cboProdi;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JRadioButton rdbPria;
private javax.swing.JRadioButton rdbWanita;
private javax.swing.JSpinner spntgl;
private javax.swing.JTable tblMahasiswa;
private javax.swing.JTextField txtNama;
private javax.swing.JTextField txtNpm;
private javax.swing.JTextField txtTahun;
// End of variables declaration