30 Juli 2009

Java Lat-10

//Nama Program :lat9.java

import javax.swing.*;
import java.awt.*;
import java.sql.*;
import java.awt.event.*;
import javax.swing.text.*;

public class lat9 extends JFrame {
JLabel jLabel1=new JLabel();
JLabel jLabel2=new JLabel();
JTextField textKode=new JTextField();
JTextField textNama=new JTextField();
List daftar= new List();
JLabel jLabel3=new JLabel();
Button button1= new Button();
Connection konek;
/**
*Methode Main
*@param args: Arguments
*/
public static void main(String args[]) {
  lat9 validasiPrimayKey=new lat9();
  validasiPrimayKey.setSize(400,400); 
  Dimension screen =Toolkit.getDefaultToolkit().getScreenSize();
  int lebar=(screen.width-validasiPrimayKey.getSize().width)/2;
  int tinggi=(screen.height-validasiPrimayKey.getSize().height)/2;

  validasiPrimayKey.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  validasiPrimayKey.setLocation(lebar,tinggi);  
  validasiPrimayKey.setVisible(true); 
  validasiPrimayKey.setResizable(false);  
}
/**
*Konstruktor
*Methode ini berisikan pembuatan komponen dan penambahan attribut
*/
public lat9() {
  this.getContentPane().setLayout(null);
  this.setTitle("Validasi Primary Key");
  jLabel1.setHorizontalAlignment(SwingConstants.RIGHT);
  jLabel1.setText("Kode Barang : ");
  jLabel1.setBounds(new Rectangle(10,13,86,15));  
  jLabel2.setBounds(new Rectangle(10,43,86,15));
  jLabel2.setHorizontalAlignment(SwingConstants.RIGHT);
  jLabel2.setText("Nama Barang : ");
  textKode.setText(null);
  textKode.setBounds(new Rectangle(100,13,187,21));
  textKode.setDocument(new batasiInput((byte)5).getFilter());
  textNama.setText(null);
  textNama.setBounds(new Rectangle(100,43,187,21));
  daftar.setBounds(new Rectangle(29,127,288,182));
  jLabel3.setText("Daftar Kode Barang yang telah tersimpan sebelumnya");
  jLabel3.setBounds(new Rectangle(29,109,343,15));
  button1.setLabel("CEK dan SIMPAN");
  button1.setBounds(new Rectangle(97,77,128,24));

//Menambahkan Action Listener
button1.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent e) {
  //Methode yang dipanggil saat tombol ditekan
  cekAndSaveData(e);
}
});
this.getContentPane().add(jLabel1, null);
this.getContentPane().add(jLabel2, null);
this.getContentPane().add(textKode, null);
this.getContentPane().add(textNama, null);
this.getContentPane().add(daftar, null);
this.getContentPane().add(jLabel3, null);
this.getContentPane().add(button1, null);

//Memanggil methode untuk Koneksi database dan daftar kode yang telah tersimpan 
koneksiDatabase();
daftarKode();
}

/**
*Methode koneksiDatabase
*Untuk melakukan koneksi dengan Database Server
*/
public void koneksiDatabase() {
// Mencoba memanggil Driver JDBC
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
System.out.println("Sukses Driver JDBC ditemukan ....");
//Mencoba melakukan koneksi dengan Database
try {
String url = "jdbc:odbc:Database";
String user = " ";
String pass = " ";
konek = DriverManager.getConnection(url, user, pass);
System.out.println("Sukses Koneksi ....");
}
//Gagal Koneksi dengan Database
catch (SQLException se) {
System.out.println("Koneksi Gagal= " + se);
}
}
  //Gagal Memanggil Driver JDBC
catch (ClassNotFoundException cnfe) {
System.out.println("Class tidak ditemukan.. Error : "+ cnfe);
}
}//Akhir methode koneksiDatabase()

/**
*Methode daftarKode()
*Utk menampilkan daftar kode dan nama siswa yang telah tersimpan di database
*/
public void daftarKode() {
daftar.removeAll();
//Mencoba mengirim Statement SQL
try {
Statement stat = konek.createStatement();
ResultSet rSet = stat.executeQuery("Select * from tbl_barang");
//Mengambil hasil SQL
while (rSet.next()) {
daftar.add(rSet.getString("kd_barang") + " / " + rSet.getString("nm_barang"));
}
stat.close();
}
//Kesalahan pengiriman Statement SQL
catch (SQLException se) {
System.out.println("SQL salah = " +se);
}
 catch (Exception e) {
System.out.println("Pesan Error = " + e);
}
} //Akhir methode daftarKode()
/**
*Methode cekAndSaveData(ActionEvent e)
*Untuk melakukan pemeriksaan apakah data yang dimasukkan valid atau tidak-
*Jika valid, data tersebut disimpan
*tetapi jika tidak valid maka menampilkan pesan kesalahan
*@param e : Action Event
*/
void cekAndSaveData(ActionEvent e) {
//Mencoba Mengirim Statement SQL
try {
PreparedStatement stat = konek.prepareStatement(
  "Insert Into tbl_barang values(?,?)");
try {
stat.setString(1, textKode.getText());
stat.setString(2, textKode.getText());
stat.executeUpdate();
}
//Gagal Mengirim Statement SQL (Data tidak Valid)
catch (SQLException se) {
System.out.println("Gagal Menyimpan.. Pesan Error = " + se);
JOptionPane.showMessageDialog(null,
  "Kode yang Anda masukkan telah ada sebelumnya \nGagal disimpan.. Coba Lagi \nPesan Error :\n" + "" + se + "");
textKode.setFocusable(true);
}
daftarKode();
stat.close();
}
catch (Exception er) {
System.out.println("Pesan Error = " + er);
}
} //Akhir Methode cekAndSaveData(ActionEvent e)

/**
*Membuat Kelas Untuk membatasi Input yang masuk 
*/
class batasiInput {
byte length;
PlainDocument filter;
public batasiInput(byte length) {
this.length = length;
}

public PlainDocument getFilter() {
filter = new javax.swing.text.PlainDocument() {
public void insertString(int offs, String str, AttributeSet a) throws
BadLocationException {
int ab = textKode.getText().length();
if (ab < length) {
super.insertString(offs, str, a);
}
}
};
return filter;
}
}
}