Seperti biasa pertama kita harus membuat file baru dalam paket AplikasiPenjualan, dengan cara klik kanan paket Penjualan, Pilih New - JFrame Form…, sehingga muncul jendela New File. Kemudian Pada jendela New JFrame Form, isikan FrmBrgMasuk pada kotak isian Class Name, dan Package pilih aplikasipenjualan, lalu tekan tombol Finish untuk mengakhiri. Setalah Form Baru dibuat kemudian Desainlah Form yang baru sobat buat seperti gambar dibawah:
Keterangan :
Sekarang kita masuk ketahap pengkodeannya sob, berikut syntax programnya:
Pada bagian import tambahkan dibawah baris package aplikasipenjualan sepeti kode berikut:
package penjualan;
import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
Pada bagian public class FrmBrgMasuk extends javax.swing.JFrame tambahkan kode berikut:
public final class FrmBrgMasuk extends javax.swing.JFrame {
Connection conn;
Statement cn;
/**
* Creates new form FrmBrgMasuk
*/
public FrmBrgMasuk() {
initComponents();
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize=this.getSize();
if(frameSize.height > screenSize.height){
frameSize.height=screenSize.height;
}
if(frameSize.width > screenSize.width){
frameSize.width=screenSize.width;
}
this.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height = screenSize.height) / 10);
table.setModel(tableModel);
Tabel(table, new int[]{90,300,90,60,60,90});
setDefaultTable();
SetEditOff();
TanggalOtomatis();
TampilComboBarang();
TampilComboPetugas();
TampilComboDistributor();
tampilnota();
}
Buatlah kode program diatas // Variables declaration - do not modify untuk menampilkan data pada tabel seperti berikut:
private javax.swing.table.DefaultTableModel tableModel=getDefaultTabelModel();
private void Tabel(javax.swing.JTable tb, int lebar[] ) {
tb.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
int kolom=tb.getColumnCount();
for(int i=0;i < kolom;i++) {
javax.swing.table.TableColumn tbc=tb.getColumnModel().getColumn(i);
tbc.setPreferredWidth(lebar[i]);
tb.setRowHeight(17);
}
}
private javax.swing.table.DefaultTableModel getDefaultTabelModel() {
return new javax.swing.table.DefaultTableModel(
new Object[][] {},
new String [] {"Kode Barang","Nama Barang","Harga Jual","Stok","Jumlah","Sub Total"}
){
boolean[] canEdit = new boolean[]{
false, false, false, false
};
public boolean isCellEditable(int rowIndex, int columnIndex){
return canEdit[columnIndex];
}
};
}
String data[]=new String[6];
private void setDefaultTable() {
String stat ="";
try {
koneksi();
String SQL = "SELECT tblbarang.kodebarang,tblbarang.namabarang,tblbarang.hargajual," +
"tblbarang.stok,tbldetailbrgmasuk.jumlah,tbldetailbrgmasuk.subtotal,tblbrgmasuk.nonota " +
"FROM tblbarang,tbldetailbrgmasuk,tblbrgmasuk " +
"WHERE tblbarang.kodebarang=tbldetailbrgmasuk.kodebarang " +
"AND tblbrgmasuk.nonota=tbldetailbrgmasuk.nonota" +
"AND tbldetailbrgmasuk.nonota="+NoNota.getText()+"";
try (ResultSet res = cn.executeQuery(SQL)) {
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
tableModel.addRow(data);
}
}
cn.close();
conn.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
Buatlah private baru TampilGridDetail kemudian buat kode program seperti berikut:
private void TampilGridDetail(){
String stat ="";
try {
koneksi();
String SQL = "SELECT tblbarang.kodebarang,tblbarang.namabarang,tblbarang.hargajual, tblbarang.stok,tbldetailbrgmasuk.jumlah,tbldetailbrgmasuk.subtotal,tblbrgmasuk.nonota " +
"FROM tblbarang,tbldetailbrgmasuk,tblbrgmasuk WHERE tblbarang.kodebarang=tbldetailbrgmasuk.kodebarang " +
"AND tblbrgmasuk.nonota=tbldetailbrgmasuk.nonota AND tbldetailbrgmasuk.nonota='"+NoNota.getText()+"'";
try (ResultSet res = cn.executeQuery(SQL)) {
while(res.next()){
data[0] = res.getString(1);
data[1] = res.getString(2);
data[2] = res.getString(3);
data[3] = res.getString(4);
data[4] = res.getString(5);
data[5] = res.getString(6);
tableModel.addRow(data);
}
}
cn.close();
conn.close();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
Buatlah perintah BersihData,BersihDetail,SetEditOff, dan SetEditON disembarang tempat yang memiliki space kosong seperti berikut ini:
public void BersihData(){
tableModel.setRowCount(0);
// NoNota.setText("");
IDDistributor.setSelectedIndex(0);
NamaPetugas.setText("");
IDPetugas.setSelectedIndex(0);
NamaDistributor.setText("");
KotaAsal.setText("");
KodeBarang.setSelectedIndex(0);
NamaBarang.setText("");
HargaJual.setText("");
Jumlah.setText("");
Stok.setText("");
SubTotal.setText("0");
Total.setText("0");
}
public void BersihDetail(){
KodeBarang.setSelectedIndex(0);
NamaBarang.setText("");
HargaJual.setText("");
Stok.setText("");
Jumlah.setText("");
SubTotal.setText("0");
}
public void SetEditOff(){
NoNota.setEnabled(false);
TglMasuk.setEnabled(false);
IDDistributor.setEnabled(false);
IDPetugas.setEnabled(false);
KodeBarang.setEnabled(false);
Jumlah.setEnabled(false);
Hitung.setEnabled(false);
CariData.setEnabled(false);
AddItem.setEnabled(false);
}
public void SetEditOn(){
NoNota.setEnabled(true);
TglMasuk.setEnabled(true);
IDDistributor.setEnabled(true);
IDPetugas.setEnabled(true);
KodeBarang.setEnabled(true);
Jumlah.setEnabled(true);
SaveTransaction.setEnabled(true);
CariData.setEnabled(true);
Hitung.setEnabled(true);
AddItem.setEnabled(true);
}
Buatlah Perintah Koneksi disembarang tempat yang memiliki space kosong seperti berikut ini:
public void koneksi(){
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbretail","root","");
cn = conn.createStatement();
}catch (ClassNotFoundException | SQLException e){
JOptionPane.showMessageDialog(null,"koneksi gagal..");
JOptionPane.showMessageDialog(null,e.getMessage());
}
}
(option) Buatlah Perintah tampil nota dan tanggalotomatis untuk menampilkan nota dan tanggal secara otomatis disembarang tempat yang memiliki space kosong seperti berikut ini:
public void tampilnota() {
// Date tanggal = new Date();
// String kode;
// NoFaktur.setText(""+ (String.format("%1$tY%1$tm%1$td",tanggal)));
Date sk = new Date();
SimpleDateFormat format1=new SimpleDateFormat("ddMMyy");
String time = format1.format(sk);
koneksi();
String sql = "select right(nonota,1) as kd from tblbrgmasuk order by kd desc";
try{
try (ResultSet rs = cn.executeQuery(sql)) {
if (rs.next()){
int kode = Integer.parseInt(rs.getString("kd"))+1;
NoNota.setText(time+Integer.toString(kode));
}else{
int kode = 1;
NoNota.setText(time+Integer.toString(kode));
}
}
}catch (SQLException | NumberFormatException e){
JOptionPane.showMessageDialog(null, e);
}
}
public void TanggalOtomatis(){
Date tanggal = new Date();
TglMasuk.setText(""+ (String.format("%1$td/%1$tb/%1$tY",tanggal)));
}
Buatlah kode program pada kombobox idpetugas dengan cara klik kanan pilih events-item-itemStatChanged.
private void IDPetugasItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_IDPetugasItemStateChanged
// TODO add your handling code here:
try {
koneksi();
String SQL = "SELECT * FROM tblpetugas where idpetugas='"+
IDPetugas.getSelectedItem().toString()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
NamaPetugas.setText(res.getString("namapetugas"));
} catch (SQLException ex) {
}
}//GEN-LAST:event_IDPetugasItemStateChanged
Buatlah private baru untuk menampilakn data pada kombobox idpetugas seperti berikut:
public void TampilComboPetugas(){
try {
koneksi();
String SQL = "SELECT * FROM tblpetugas";
ResultSet res = cn.executeQuery(SQL);
while(res.next()){
IDPetugas.addItem(res.getString("idpetugas"));
}
} catch (SQLException ex) {
}
}
Buatlah kode program pada kombobox iddistributor dengan cara klik kanan pilih events-item-itemStatChanged.
private void IDDistributorItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_IDDistributorItemStateChanged
// TODO add your handling code here:
try {
koneksi();
String SQL = "SELECT * FROM tbldistributor where iddistributor='"+
IDDistributor.getSelectedItem().toString()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
NamaDistributor.setText(res.getString("namadistributor"));
KotaAsal.setText(res.getString("kotasal"));
} catch (SQLException ex) {
}
}//GEN-LAST:event_IDDistributorItemStateChanged
Buatlah private baru untuk menampilakn data pada kombobox iddistributor seperti berikut:
public void TampilComboDistributor(){
try {
koneksi ();
String SQL = "SELECT * FROM tbldistributor";
ResultSet res = cn.executeQuery(SQL);
while(res.next()){
IDDistributor.addItem(res.getString("iddistributor"));
}
} catch (SQLException ex) {
}
}
Buatlah kode program pada kombobox kodebarang dengan cara klik kanan pilih events-item-itemStatChanged.
private void KodeBarangItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_KodeBarangItemStateChanged
// TODO add your handling code here:
try {
koneksi();
String SQL = "SELECT * FROM tblbarang where kodebarang='"+
KodeBarang.getSelectedItem().toString()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
NamaBarang.setText(res.getString("namabarang"));
HargaJual.setText(res.getString("hargajual"));
Stok.setText(res.getString("stok"));
} catch (SQLException ex) {
}
Jumlah.requestFocus();
AddItem.setEnabled(true);
}//GEN-LAST:event_KodeBarangItemStateChanged
Buatlah private baru untuk menampilakn data pada kombobox combobarang seperti berikut:
public void TampilComboBarang(){
try {
koneksi ();
String SQL = "SELECT * FROM tblbarang";
ResultSet res = cn.executeQuery(SQL);
while(res.next()){
KodeBarang.addItem(res.getString("kodebarang"));
}
} catch (SQLException ex) {
}
}
Buatlah kode program untuk menampilkan perhitungan subtotal dengan mengkilik button hitung-event-action-ActionPerformed.
private void HitungActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_HitungActionPerformed
// TODO add your handling code here:
int a;
int b;
double c;
a = (int) Double.parseDouble(HargaJual.getText());
b = (int) Double.parseDouble(Jumlah.getText());
c = a * b;
SubTotal.setText(String.valueOf(c));
}//GEN-LAST:event_HitungActionPerformed
Buatlah kode program untuk menampilkan total dengan cara klik kanan textfield subtotal-events-charet-charetUpdate.
private void SubTotalCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_SubTotalCaretUpdate
// TODO add your handling code here:
double d, e;
d = Double.parseDouble(SubTotal.getText());
e = Double.parseDouble(Total.getText());
e = e+d;
Total.setText(String.valueOf(e));
}//GEN-LAST:event_SubTotalCaretUpdate
Buatlah kode program AddNew dengan mengklik kanan button AddNew-events-action-ActionPerformed.
private void AddNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AddNewActionPerformed
// TODO add your handling code here:
SetEditOn();
NoNota.requestFocus();
BersihData();
tampilnota();
}//GEN-LAST:event_AddNewActionPerformed
Buatlah kode program Add Item dengan mengklik kanan button save-events-action-ActionPerformed.
private void AddItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_AddItemActionPerformed
// TODO add your handling code here:
String NM=NoNota.getText();
String KB=KodeBarang.getSelectedItem().toString();
String JM=Jumlah.getText();
if ((NM.isEmpty()) | (KB.isEmpty()) |(JM.isEmpty())) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
KodeBarang.requestFocus();
}else {
try {
koneksi();
try (Statement stt = conn.createStatement()) {
String SQL = "insert into tbldetailbrgmasuk values('"+NoNota.getText()+"',"+
"'"+KodeBarang.getSelectedItem()+"',"+
"'"+Jumlah.getText()+"',"+
"'"+SubTotal.getText()+"')";
stt.executeUpdate(SQL);
koneksi();
Statement stt1 = conn.createStatement();
String SQL1 = "Update tblbarang Set stok=stok + '"+Jumlah.getText()+"'" +
"Where kodebarang='"+KodeBarang.getSelectedItem().toString()+"'";
stt1.executeUpdate(SQL1);
data[0] = KodeBarang.getSelectedItem().toString();
data[1] = NamaBarang.getText();
data[2] = HargaJual.getText();
data[3] = Stok.getText();
data[4] = Jumlah.getText();
data[5] = SubTotal.getText();
tableModel.insertRow(0, data);
}
conn.close();
KodeBarang.requestFocus();
AddItem.setEnabled(false);
BersihDetail();
//TampilGrid();
KodeBarang.requestFocus();
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}//GEN-LAST:event_AddItemActionPerformed
Buatlah kode program SaveTransaction dengan mengklik kanan button save-events-action-ActionPerformed.
private void SaveTransactionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SaveTransactionActionPerformed
// TODO add your handling code here:
String NM=NoNota.getText();
if ((NM.isEmpty())) {
JOptionPane.showMessageDialog(null,"data tidak boleh kosong, silahkan dilengkapi");
NoNota.requestFocus();
}else {
try {
koneksi();
String SQL = "insert into tblbrgmasuk values('"+NoNota.getText()+"',"+
"'"+TglMasuk.getText()+"',"+
"'"+IDDistributor.getSelectedItem()+"',"+
"'"+IDPetugas.getSelectedItem()+"',"+
"'"+Total.getText()+"')";
cn.executeUpdate(SQL);
cn.close();
conn.close();
BersihData();
SetEditOff();
SaveTransaction.setEnabled(false);
} catch (Exception ex) {
System.err.println(ex.getMessage());
}
}
}//GEN-LAST:event_SaveTransactionActionPerformed
Buatlah kode program Close dengan mengklik kanan button Close-evens-action-ActionPerformed.
private void CloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CloseActionPerformed
// TODO add your handling code here:
if(JOptionPane.showConfirmDialog(null,"This application will be close \n if you press button OK","Information",JOptionPane.OK_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE)==JOptionPane.OK_OPTION)
this.dispose();
new FrmMenu().setVisible(true);
}//GEN-LAST:event_CloseActionPerformed
Buatlah kode program Cari Data dengan mengklik kanan button Cari Data-events-Action-ActionPerformed.
private void CariDataActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CariDataActionPerformed
// TODO add your handling code here:
try {
koneksi ();
String SQL = "SELECT * FROM tblbrgmasuk where nonota='"+NoNota.getText()+"'";
ResultSet res = cn.executeQuery(SQL);
res.absolute(1);
TglMasuk.setText(res.getString("tglmasuk"));
IDPetugas.setSelectedItem(res.getString("idpetugas"));
IDDistributor.setSelectedItem(res.getString("iddistributor"));
Total.setText(res.getString("total"));
TampilGridDetail();
SaveTransaction.setEnabled(false);
NoNota.setEnabled(false);
CariData.setEnabled(false);
} catch (SQLException ex) {
}
}//GEN-LAST:event_CariDataActionPerformed
Finally Jalankan Program dengan Shift+F6 dan berikut hasilnya sob:
Sekian sob untuk postingan kali ini, semoga bermanfaat untuk sobat helmyntest dan dapat menambah wawasan pengetahuan sobat. Jika ada yang tidak dapat dipahami silahkan berkomentar dibawah atau bisa langsung pesan Facebook gw sob. Jika ada salah salah kata gw mohon maaf sob. Sampai Jumpa dipostingan gw berikutnya sob dan Stay Tune untuk lanjutan dari aplikasi penjualan barang.