0% found this document useful (0 votes)
20 views

Java

Uploaded by

sangadjiindah8
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Java

Uploaded by

sangadjiindah8
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

package frame;

import java.awt.HeadlessException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import java.sql.PreparedStatement;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import java.sql.ResultSet;
import java.sql.Statement;

public class mainframe extends javax.swing.JFrame {


private DefaultTableModel model;
public mainframe() {
initComponents();
initTableModel();
display();
autonumber();
}

private void initTableModel() {


model = new DefaultTableModel(new String[]{"Kode", "Judul", "Deskripsi",
"Status"}, 0);
tblData.setModel(model);
}

private void display(){


model.getDataVector().removeAllElements();
model.fireTableDataChanged();

try{
Connection conn = (Connection)koneksi.koneksi.koneksi_db();
try (Statement s = conn.createStatement()) {
String sql = "SELECT * FROM tabel_data";
ResultSet rs = s.executeQuery(sql);

while(rs.next()){
Object[] number = new Object[4];
number [0] = rs.getString("kode");
number [1] = rs.getString("judul");
number [2] = rs.getString("deskripsi");
number [3] = rs.getString("status");

model.addRow(number);
}
tblData.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
callText(); // Panggil callText() saat pemilihan baris berubah
}
});
}
}catch(SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null, "Gagal Menampilkan Data!");
}
}
private void autonumber(){
try{
Connection conn = (Connection)koneksi.koneksi.koneksi_db();
try (Statement s = conn.createStatement()) {
String sql = "SELECT * FROM tabel_data ORDER BY kode DESC";
try (ResultSet rs = s.executeQuery(sql)) {
if (rs.next()){
String NoUpdate = rs.getString("kode").substring(2);
String Nomor = "" + (Integer.parseInt(NoUpdate) + 1);
String Nol = "";

switch (Nomor.length()) {
case 1 -> Nol = "00";
case 2 -> Nol = "0";
case 3 -> Nol = "";
default -> {
}
}

txtKode.setText(Nol + Nomor);

}else{
txtKode.setText("001");
}
}
}
}catch(NumberFormatException | SQLException e){
JOptionPane.showMessageDialog(null, "Auto Number Error!");
}
}

private void callText(){


int selectedRow = tblData.getSelectedRow();
if (selectedRow != -1) {
DefaultTableModel model = (DefaultTableModel) tblData.getModel();
String kode = model.getValueAt(selectedRow, 0).toString();
String judul = model.getValueAt(selectedRow, 1).toString();
String deskripsi = model.getValueAt(selectedRow, 2).toString();
String status = model.getValueAt(selectedRow, 3).toString();
txtKode.setText(kode);
txtJudul.setText(judul);
txtDeskripsi.setText(deskripsi);
boxStatus.setSelectedItem(status);
}
}

private void clear(){


txtJudul.setText("");
txtDeskripsi.setText("");
}
public mainframe() {
initComponents();
}

/**
* 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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">

private void initComponents() {

txtKode = new javax.swing.JTextField();


jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
txtDeskripsi = new javax.swing.JTextField();
txtJudul = new javax.swing.JTextField();
boxStatus = new javax.swing.JComboBox<>();
jLabel4 = new javax.swing.JLabel();
btnTambah = new javax.swing.JButton();
btnEdit = new javax.swing.JButton();
btnHapus = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
tblData = new javax.swing.JTable();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

txtKode.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtKodeActionPerformed(evt);
}
});

jLabel1.setText("Kode");

jLabel2.setText("Deskripsi");

jLabel3.setText("Judul");

boxStatus.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]


{ "Selesai", "Belum Selesai" }));

jLabel4.setText("Status");

btnTambah.setText("Tambah");
btnTambah.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnTambahActionPerformed(evt);
}
});

btnEdit.setText("Edit");
btnEdit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnEditActionPerformed(evt);
}
});

btnHapus.setText("Hapus");
btnHapus.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnHapusActionPerformed(evt);
}
});
tblData.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
{null, null, null, null},
{null, null, null, null},
{null, null, null, null},
{null, null, null, null}
},
new String [] {
"Title 1", "Title 2", "Title 3", "Title 4"
}
));
jScrollPane1.setViewportView(tblData);

javax.swing.GroupLayout layout = new


javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(29, 29, 29)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE,
50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.LEADING, false)
.addComponent(jLabel1,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jLabel3,
javax.swing.GroupLayout.DEFAULT_SIZE, 50, Short.MAX_VALUE)
.addComponent(jLabel4,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(42, 42, 42)
.addGroup(layout.createParallelGroup(javax.swing.Gr
oupLayout.Alignment.LEADING)
.addComponent(txtDeskripsi,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtKode,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentP
lacement.UNRELATED)
.addComponent(boxStatus,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentP
lacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(btnTambah)
.addGap(24, 24, 24)
.addComponent(btnEdit)
.addPreferredGap(javax.swing.LayoutStyle.ComponentP
lacement.UNRELATED)
.addComponent(btnHapus)))))
.addGap(9, 9, 9))
.addGroup(layout.createSequentialGroup()
.addGap(17, 17, 17)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE,
440, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(24, Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(131, 131, 131)
.addComponent(txtJudul, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(286, Short.MAX_VALUE)))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(15, 15, 15)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.BASELINE)
.addComponent(txtKode, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED
)
.addComponent(jLabel3)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(17, 17, 17)
.addComponent(jLabel2))
.addGroup(layout.createSequentialGroup()
.addGap(25, 25, 25)
.addComponent(txtDeskripsi,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement
.UNRELATED)
.addComponent(btnHapus))
.addGroup(layout.createSequentialGroup()
.addGap(16, 16, 16)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupL
ayout.Alignment.BASELINE)
.addComponent(boxStatus,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnTambah)
.addComponent(btnEdit))
.addComponent(jLabel4))))
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE,
275, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.
LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(53, 53, 53)
.addComponent(txtJudul, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(369, Short.MAX_VALUE)))
);

pack();
}// </editor-fold>

private void btnTambahActionPerformed(java.awt.event.ActionEvent evt) {

String kode = txtKode.getText();


String judul = txtJudul.getText();
String deskripsi = txtDeskripsi.getText();
String status = (String) boxStatus.getSelectedItem();

if (txtKode.getText().isEmpty() || txtJudul.getText().isEmpty() ||
txtDeskripsi.getText().isEmpty())
{
JOptionPane.showMessageDialog(this, "Anda belum mengisi semua kolom yang ada!");
}else{
try{
String SQL = "INSERT INTO tabel_data (kode, judul, deskripsi, status) VALUES ('" +
kode + "', '" +
judul + "', '" + deskripsi + "', '" + status + "')";
java.sql.Connection conn = (java.sql.Connection)koneksi.koneksi.koneksi_db();
java.sql.PreparedStatement pst = conn.prepareStatement(SQL);
pst.execute();

display();
JOptionPane.showMessageDialog(null, "Data Berhasi Ditambahkan");
clear();
autonumber();
}catch(SQLException | HeadlessException e){
JOptionPane.showMessageDialog(null, e);
}
} // TODO add your handling code here:
}

private void txtKodeActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:


}

private void btnEditActionPerformed(java.awt.event.ActionEvent evt) {

int selectedRow = tblData.getSelectedRow();


if (selectedRow != -1) {
// Hapus baris dari model tabel
DefaultTableModel model = (DefaultTableModel) tblData.getModel();
try {
// Ambil nilai kode dari kolom pertama yang dipilih (diasumsikan sebagai String)
String kodeToDelete = (String) model.getValueAt(selectedRow, 0);
// Buat perintah SQL DELETE dengan klausa WHERE sesuai dengan kode yang dipilih
String SQL = "DELETE FROM tabel_data WHERE kode=?";
// Buka koneksi ke database
try (Connection conn = koneksi.koneksi.koneksi_db();
PreparedStatement pst = conn.prepareStatement(SQL)) {
pst.setString(1, kodeToDelete);
// Eksekusi perintah DELETE
int deletedRows = pst.executeUpdate();
// Periksa jika ada baris yang berhasil dihapus
if (deletedRows > 0) {
// Hapus baris dari model tabel di UI
model.removeRow(selectedRow);
JOptionPane.showMessageDialog(null, "Data berhasil dihapus.");
clear();
} else {
JOptionPane.showMessageDialog(null, "Gagal menghapus data.");
}
autonumber();
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getMessage());
}
} catch (ClassCastException | NullPointerException e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getMessage());
}
} else {
JOptionPane.showMessageDialog(this, "Pilih baris yang ingin dihapus.");
} // TODO add your handling code here:
}

private void btnHapusActionPerformed(java.awt.event.ActionEvent evt) {

int selectedRow = tblData.getSelectedRow();


if (selectedRow != -1) {
// Hapus baris dari model tabel
DefaultTableModel model = (DefaultTableModel) tblData.getModel();
try {

// Ambil nilai kode dari kolom pertama yang dipilih (diasumsikan sebagai String)
String kodeToUpdate = (String) model.getValueAt(selectedRow, 0);
String kodeBaru = txtKode.getText();
String judulBaru = txtJudul.getText(); // Ambil judul baru dari JTextField
String deskripsiBaru = txtDeskripsi.getText(); // Ambil deskripsi baru dari
JTextField
String statusBaru = (String) boxStatus.getSelectedItem();

txtKode.setText(kodeBaru);
txtJudul.setText(judulBaru);
txtDeskripsi.setText(deskripsiBaru);
boxStatus.setSelectedItem(statusBaru);

// Buat perintah SQL UPDATE dengan klausa WHERE sesuai dengan kode yang dipilih
String SQL = "UPDATE tabel_data SET kode=?, judul=?, deskripsi=?, status=? WHERE
kode=?";

if (txtKode.getText().isEmpty() || txtJudul.getText().isEmpty() ||
txtDeskripsi.getText().isEmpty()) {
JOptionPane.showMessageDialog(this, "Anda belum mengisi semua kolom yang ada!");
}else{
// Buka koneksi ke database
try (Connection conn = koneksi.koneksi.koneksi_db();
PreparedStatement pst = conn.prepareStatement(SQL)) {
pst.setString(1, kodeBaru);
pst.setString(2, judulBaru);
pst.setString(3, deskripsiBaru);
pst.setString(4, statusBaru);
pst.setString(5, kodeToUpdate);
// Eksekusi perintah UPDATE
int updatedRows = pst.executeUpdate();
if (updatedRows > 0) {
JOptionPane.showMessageDialog(null, "Data berhasil diubah.");
// Update tabel model di UI
model.setValueAt(kodeBaru,selectedRow,0);
model.setValueAt(judulBaru, selectedRow, 1);
model.setValueAt(deskripsiBaru, selectedRow, 2);
model.setValueAt(statusBaru, selectedRow,3);
tblData.clearSelection();
clear();
} else {
JOptionPane.showMessageDialog(null, "Gagal mengubah data.");
}
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "Error: " + e.getMessage());
}
} // TODO add your handling code here:
}

/**
* @param args the command line arguments
*/
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(mainframe.class.getName()).log(java.util.logging
.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(mainframe.class.getName()).log(java.util.logging
.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(mainframe.class.getName()).log(java.util.logging
.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(mainframe.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() {
new mainframe().setVisible(true);
}
});
}

// Variables declaration - do not modify


private javax.swing.JComboBox<String> boxStatus;
private javax.swing.JButton btnEdit;
private javax.swing.JButton btnHapus;
private javax.swing.JButton btnTambah;
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 tblData;
private javax.swing.JTextField txtDeskripsi;
private javax.swing.JTextField txtJudul;
private javax.swing.JTextField txtKode;
// End of variables declaration
}

You might also like