Senin, 12 Maret 2012

Event Handling GUI pada java

Dalam event handling pada Java ada empat bagian penting yang harus diketahui:
  1. Event Object merupakan object yang mendiskripsikan sebuah event yang di-trigger oleh event source.
  2. Event Handler merupakan method yang menerima event object dan melakukan respond yang sesuai dengan event object tersebut.
  3. Event Listener merupakan interface yang akan meng-handle event yang terjadi. setiap type event mempunyai interface yang bersesuaian. Listener tersebut harus diimplementasikan oleh class yang akan meng-handle event
  4. Event Source merupakan pembangkit / trigger sebuah event objects
setiap event object mempunyai  type event yang berbdea beda. sehingga kita harus menentukan type event sebelum menentukan jenis interface listener. karena setiap type event mempunyai jenis interface listener yang bersesuaian.
berikut ini type type event yang ada di Java :
  1. ActionEvent
  2. ItemEvent
  3. WindowEvent
  4. ContainerEvent
  5. ComponentEvent
  6. FocusEvent
  7. TextEvent
  8. KeyEvent
  9. MouseEvent
  10. AdjustmentEvent
Berikut ini Interface Listener
  1. ActionListener
  2. ItemListener
  3. WindowListener
  4. ContainerListener
  5. ComponentListener
  6. FocusListener
  7. TextListener
  8. KeyListener
  9. MouseListener
  10. MouseMotionListener
  11. AdjustmentListener
Berdasarkan tulisan diatas, setiap type event mempunyai satu jenis interface listener kecuali MouseEvent yang mempunyai dua jenis interface listener. dan setiap interface mempunyai method abstract yang harus di override class yang meng-impletasikan interface. event listener dan event handler terdapat pada package java.awt.event
Bagaimana event handling dalam Java? ada tiga langkah penting dalam event handling
  1. Deklarasikan class yang akan meng-handle event yang terjadi dan tuliskan code yang menyatakan class tersebut meng-implement interface listener
  2. Event source mendaftarkan sebuah listener melalui method add<type>Listener
  3. Kode yang mengimplementasikan method pada interface listener pada class yang akan meng-handle event. [ Override ]
Contoh 1
MouseEventsDemo.java
package mouseeventsdemo;
import java.awt.*;
import java.awt.event.*;
/**
*
* @author Ren
*/
public class MouseEventsDemo extends Frame implements MouseListener, MouseMotionListener {  // Langkah 1
TextField tf;
public MouseEventsDemo( String title){
super(title);
tf = new TextField(60);
addMouseListener(this); // Langkah 2
}
public void launchFrame() {
/* Menambah komponen pada frame */
add(tf, BorderLayout.SOUTH);
setSize(300,300);
setVisible(true);
}
public void mouseClicked(MouseEvent me) { // Langkah 3
String msg = “Mouse clicked.”;
tf.setText(msg);
}
public void mouseEntered(MouseEvent me) {
String msg = “Mouse entered component.”;
tf.setText(msg);
}
public void mouseExited(MouseEvent me) {
String msg = “Mouse exited component.”;
tf.setText(msg);
}
public void mousePressed(MouseEvent me) {
String msg = “Mouse pressed.”;
tf.setText(msg);
}
public void mouseReleased(MouseEvent me) {
String msg = “Mouse released.”;
tf.setText(msg);
}
public void mouseDragged(MouseEvent me) {
String msg = “Mouse dragged at ” + me.getX()
+ “,” + me.getY();
tf.setText(msg);
}
public void mouseMoved(MouseEvent me) {
String msg = “Mouse moved at ” + me.getX()
+ “,” + me.getY();
tf.setText(msg);
}
}
main.java
package mouseeventsdemo;
/**
*
* @author Ren
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
MouseEventsDemo med = new MouseEventsDemo(“Mouse Events Demo”);
med.launchFrame();
}
}

reference: http://7seasons.wordpress.com/2010/10/30/event-handling-gui-pada-java/

Ayo Mencoba Mengakses Database Lewat Java :D

Untuk mengakses database dengan Java cukup mudah. API Java yang perlu dipelajari ada dalam paket java.sql. Class-class yang berhubungan dengan mengakses database antara lain Connection, Statement, PreparedStatement dan ResultSet. Teknologi Java untuk mengakses database disebut JDBC. Dengan JDBC kita dapat menciptakan koneksi ke database, mengirimkan perintah-perintah sql dan memproses hasil eksekusi sql.

Hal lain yang dibutuhkan untuk mengakses database adalah JDBC Driver. JDBC Driver berbeda untuk setiap database yang ada. Misalnya JDBC Driver untuk MySQL akan berbeda dengan JDBC Driver untuk SQL Server atau Oracle.

Aplikasi database yang dikembangkan menggunakan teknologi Java tidak akan terikat dengan database yang digunakan. Maksudnya adalah kita dapat bergonta-ganti database engine dari yang satu ke database engine yang lain tanpa harus mengubah source program kita secara signifikan. Yang perlu diganti hanyalah JDBC Driver yang digunakan.

// oiya sebelum kita melakukan percobaannya, dibutuhkan JDBC Driver MySQL untuk mengakses database MySQL

Membaca Data
/**
* @author Hendro Steven
*/
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.*;
public class DatabaseApp{
public static void main(String args[]){
 Connection conn = null;
 Statement st = null;
 ResultSet result=null;

 String sql = "SELECT * FROM t_pegawai";

 try{
   //load Driver
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   //Define the Connection URL
   String dbURL = "jdbc:mysql://localhost/db_training";
   String dbUser = "";
   String dbPass = "";
   //Establish The Connection
   conn = DriverManager.getConnection(dbURL,dbUser,dbPass);
   //Create a statement object
   st = conn.createStatement();
   //Execute a query
   result = st.executeQuery(sql);
   //Process the results
   System.out.println("Database Result :");
   while(result.next()){
     String kode = result.getString(1);
     String nama = result.getString(2);
     String alamat = result.getString(3);
     String gaji = result.getString(4);
     System.out.println("KODE   : "+ kode);
     System.out.println("NAMA   : "+ nama);
     System.out.println("ALAMAT : "+ alamat);
     System.out.println("GAJI   : "+ gaji);
     System.out.println();
   }   
   //close the connection
   st.close();
   conn.close();   
 }catch (InstantiationException e) {
   System.out.println("InstantiationException....");
   System.out.println(e.getMessage());
 }catch (ClassNotFoundException e) {
   System.out.println("ClassNotFoundException....");
   System.out.println(e.getMessage());
 }catch (IllegalAccessException e) {
   System.out.println("IllegalAccessException....");
   System.out.println(e.getMessage());
 }catch (SQLException e) {
   System.out.println("SQLException....");
   System.out.println(e.getMessage());
 }
}
}
Menambah Data

/**
* @author Hendro Steven SalatigaCamp
*/
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.*;

public class AddDataApp{
public static void main(String args[]){
  Connection conn = null;
  Statement st = null;
  ResultSet result=null;

  String sql = "";
  BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

  try{
    //load Driver
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    //Define the Connection URL
    String dbURL = "jdbc:mysql://localhost/db_training";
    String dbUser = "";
    String dbPass = "";
    //Establish The Connection
    conn = DriverManager.getConnection(dbURL,dbUser,dbPass);
    //Create a statement object
    st = conn.createStatement();
  
    //ambil input dari console
    System.out.println("Input Data");
    System.out.print("KODE     : "); String kode = input.readLine();
    System.out.print("NAMA   : "); String nama = input.readLine();
    System.out.print("ALAMAT : "); String alamat = input.readLine();
    System.out.print("GAJI   :");  double gaji = Double.parseDouble(input.readLine());    
    sql = "INSERT INTO t_pegawai VALUES('"+kode+"','"+nama+"','"+alamat+"',"+gaji+")";
  
    //Execute a query
    st.executeUpdate(sql);
    System.out.println("Completed...");
  
    //close the connection
    st.close();
    conn.close();
  }catch (InstantiationException e) {
    System.out.println("InstantiationException....");
    System.out.println(e.getMessage());
  }catch (ClassNotFoundException e) {
    System.out.println("ClassNotFoundException....");
    System.out.println(e.getMessage());
  }catch (IllegalAccessException e) {
    System.out.println("IllegalAccessException....");
    System.out.println(e.getMessage());
  }catch (SQLException e) {
    System.out.println("SQLException....");
    System.out.println(e.getMessage());
  }catch (IOException e){
    System.out.println("IOException....");
    System.out.println(e.getMessage());
  }           
}
}
 
Menghapus Data

/**
 * @author Hendro Steven SalatigaCamp
 */
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.io.*;

public class DelDataApp{
 public static void main(String args[]){
   Connection conn = null;
   Statement st = null;
   ResultSet result=null;
  
   String sql = "";
   BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  
   try{
     //load Driver
     Class.forName("com.mysql.jdbc.Driver").newInstance();
     //Define the Connection URL
     String dbURL = "jdbc:mysql://localhost/db_training";
     String dbUser = "";
     String dbPass = "";
     //Establish The Connection
     conn = DriverManager.getConnection(dbURL,dbUser,dbPass);
     //Create a statement object
     st = conn.createStatement();
    
     //ambil input dari console
     System.out.println("Input Kode Yang akan dihapus :");
     System.out.print("KODE     : "); String kode = input.readLine();       
     sql = "DELETE FROM t_pegawai WHERE kode='"+kode+"'";
    
     //Execute a query
     st.executeUpdate(sql);
     System.out.println("Completed...");
    
     //close the connection
     st.close();
     conn.close();
   }catch (InstantiationException e) {
     System.out.println("InstantiationException....");
     System.out.println(e.getMessage());
   }catch (ClassNotFoundException e) {
     System.out.println("ClassNotFoundException....");
     System.out.println(e.getMessage());
   }catch (IllegalAccessException e) {
     System.out.println("IllegalAccessException....");
     System.out.println(e.getMessage());
   }catch (SQLException e) {
     System.out.println("SQLException....");
     System.out.println(e.getMessage());
   }catch (IOException e){
     System.out.println("IOException....");
     System.out.println(e.getMessage());
   }            
 }
} 
reference: http://sinau-java.blogspot.com/2008/05/mengakses-database.html

Penangan Input dan Output

Pada contoh – contoh sebelumnya sebenarnya kita telah menggunakan salah satau fungsi output pada java, yaitu method println() yang ada pada System.out. Di dalam Java semua operasi yang berhubungan dengan input dan output sudah disediakan. Librari yang perlu dipelajari yaitu paket java.io.
Dalam paket java.io terdapat banyak sekali class – class yang berhubungan dengan input dan output. Oleh karena itu kita tidak mungkin akan membahas semua class tersebut satu persatu. Tetapi anda tidak perlu kawatir karena documentasi Java cukup mudah dipelajari dan hampir semua class pada paket java.io cara penggunaannya sederhana.

Membaca Input dari Keyboard
Untuk mendapatkan inputan dari keyboard kita dapat menggunakan beberapa cara. Yang pertama kita bisa memanfaatkan parameter String[] args yang ada pada method main. Perhatikan contoh berikut ini:
public class InputArgs {
 public static void main(String[] args){
  System.out.print("Nama Anda : ");
  for(int x=0;x<args.length;x++){
   System.out.print(args[x]+ " ");
  }
 }
}

Kompile program di atas dan jalankan lewat console/DOS Prompt seperti di bawah ini.
C:\java InputNama Hendro Steven

Kelemahan pada contoh di atas adalah kita hanya dapat melakukan input pada saat akan menjalankan program, dan pada saat run-time kita tidak dapat melakukan input lagi. Untuk dapat melakukan inputan pada saat run-time, kita dapat menggunakan cara seperti contoh program di bawah ini.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputConsole {
public static void main(String[] args) throws IOException{
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Nama Anda : ");
String nama = input.readLine();
System.out.print("Pekerjaan Anda : " +nama);
String job = input.readLine();
System.out.println(nama+” adalah ”+job);
}
}

Dengan contoh di atas kita dapat memberikan inputan saat run-time. Jangan lupa untuk mengimport class – class yang kita gunakan.

Membaca Input dari File
Salah satu fungsi yang cukup penting dalam pemograman adalah bagaimana membaca isi dari sebuah file. Untuk membaca isi sebuah file tentunya kita masih akan menggunakan pake java.io dan contoh di berikut ini akan menunjukan betapa mudahnya membaca file dengan Java.

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class InputConsole {
public static void main(String[] args) {
try{
FileInputStream file = new FileInputStream(args[0]);
BufferedReader input = new BufferedReader(new InputStreamReader(file));
System.out.println(input.readLine());
input.close();
file.close();
}catch(IOException e){
System.out.println(e.getMessage());
}
}
}

Kompile program di atas dan jalankan lewat console seperti berikut ini:
C:\java BacaFile data.txt


Menulis Data ke File
Untuk menulis data ke sebuah file tidak jauh berbeda dengan contoh – contoh sebelumnya. Untuk lebih jelasnya perhatikan contoh berikut ini:
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class TulisFile {
public static void main(String[] args) {
try {
      FileOutputStream file = new FileOutputStream("C:/Data.txt");
 BufferedWriter output = new BufferedWriter(new OutputStreamWriter(file));
 String data = "Nama Saya Hendro Steven Tampake";
 output.write(data);
 output.close();
 file.close();
 System.out.println("OK");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
}

Di dalam paket java.io masih terdapat banyak class – class yang berhubungan dengan input dan output yang belum kita bahas. Diharapkan anda melakukan eksplorasi secara individu dengan panduan API yang ada.

CONTOH FILE INPUT STREAM PADA JAVA

//berikut ini merupakan contoh penggunaan file input stream pada java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class MainClass {
public static void main(String[] args) {
boolean areFilesIdentical = true;
File file1 = new File(“c:\\file1.txt”);
File file2 = new File(“c:\\file2.txt”);
if (!file1.exists() || !file2.exists()) {
System.out.println(“File tidak ditemukan”);
System.out.println(false);
}
System.out.println(“length:” + file1.length());
if (file1.length() != file2.length()) {
System.out.println(“panjang file 1 dan file 2 tidak sama”);
System.out.println(false);
}
try {
FileInputStream fis1 = new FileInputStream(file1);
FileInputStream fis2 = new FileInputStream(file2);
int i1 = fis1.read();
int i2 = fis2.read();
while (i1 != -1) {
if (i1 != i2) {
areFilesIdentical = false;
break;
}
i1 = fis1.read();
i2 = fis2.read();
}
fis1.close();
fis2.close();
} catch (IOException e) {
System.out.println(“IO exception”);
areFilesIdentical = false;
}
System.out.println(areFilesIdentical);
}
}