Rabu, 14 Maret 2012

Event Handling

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();
}
}


GUI Java

 PENGERTIAN JAVA GUIDapat disimpulkan bahwa Java GUI adalah pemrograman dengan bahasa Java yang dibuat menggunakan aplikasi yang berbasiskan GUI. Tujuannya adalah menambahkan komponen-komponen yang tidak bisa dibuat dalam basis text. Komponen-konponen tersebut bisa berupa tombol, gambar, dll. Tujuannya  adalah untuk memudahkan user menggunakan program yang dibuat tersebut.

Java AWT
Java AWT memungkinkan para pengembang untuk segera membangun applet dan aplikasi Java menggunakan sekelompok komponen antarmuka pengguna prebuilt. Sejumlah Java IDE yang tersedia mendukung pembuatan user interface menggunakan AWT dengan menyeret-dan-menjatuhkan komponen dari toolbar. Perlu dicatat bahwa sebenarnya IDE ini menghasilkan kode Java saat ditempelkan yang didasarkan pada apa yang Anda lakukan dalam lingkungan desain grafis.


Beberapa komponen AWT
Berikut ini adalah daftar dari kontrol AWT. Kontrol adalah komponen seperti tombol atau
textfield yang mengijinkan user untuk berinteraksi dengan aplikasi GUI. Berikut ini semua
subclass dari class Components.




Berikut ini adalah contoh penggunaan AWT 
JAVA SWING
Seperti pada package AWT, package dari Swing menyediakan banyak class untuk membuat
aplikasi GUI. Package tersebut dapat ditemukan di javax.swing. Perbedaan utama antara
keduanya adalah komponen Swing ditulis menyeluruh menggunakan Java. Kesimpulannya,
program GUI ditulis menggunakan banyak class dari package Swing yang mempunyai tampilan
look and feel yang sama meski dijalankan pada paltform yang berbeda. Lebih dari itu, Swing
menyediakan komponen yang lebih menarik seperti color chooser dan option pane.


Nama dari komponen GUI milik Swing hampir sama persis dengan komponen GUI milik AWT.
Perbedaan jelas terdapat pada penamaan komponen. Pada dasarnya, nama komponen Swing
sama dengan nama komponen AWT tetapi dengan tambahan huruf J pada prefixnya. Sebagai
contoh, satu komponen dalam AWT adalah button class. Sedangkan pada Swing, nama
komponen tersebut menjadi Jbutton class. Berikut adalah daftar dari komponen Swing.

 modul - JENI-Intro2-Bab07-Abstract Windowing Toolkit dan Swing

Stream I/O

Konsep dasar Stream I/O :

Stream adalah suatu abstraksi untuk data input dan output, tidak peduli dari mana input berasal atau kemana output akan ditujukan.

Tipe-Tipe Stream yang sering di gunakan: 
1. Stream Karakter dan Stream Byte
Stream Karakter
   - Keadaan file atau device untuk karakter Unicode
   - Superclass untuk semua class-class untuk stream karakter :
      * Class Reader
      * Class Writer
      * Kedua class tersebut adalah abstrak
   - Class-class yang terdapat dalam stream karakter :
      BufferedReader
·                      BufferedWriter
·                      FileReader
·                      FileWriter
·                      InputStreamReader
·                      OutputStreamReader
           Dll

Stream Byte
   - Digunakan untuk data biner
   - Class-class root untuk stream byte :
      * Class InputStream
      * Class OutputStream
      * Kedua class tersebut adalah abstrak
   - Class-class yang terdapat dalam stream byte:
       BufferedInputStream
·                        BufferedOutputStream
·                        DataInputStream
·                        DataOutputStream
·                        FileInputStream
·                        FileOutputStream
·                        InputStream
·                        OutputStream
·                         Dll


2. Input dan Output Stream
    Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau
    menulis stream.

Input Stream
Beberapa kelas turunan dari InputStream dapat dirangkum dalam tabel di bawah ini :

Kelas  Kegunaan  Argumen yang dibutuhkan untuk membuat objek
ByteArrayInputStream Menggunakan buffer pada memori sebagai aliran input Buffer yang akan digunakan sebagai aliran input
StringBufferInputStream Mengubah string menjadi InputStream Suatu String (di dalamnya sebenarnya menggunakan StringBuffer)
FileInputStream Untuk membaca informasi dari dalam file String yang berupa nama suatu file, atau objek bertipe File atau FileDescriptor
PipedInputStream Menghasilkan data yang ditulis oleh PipedOutputStream. Mengimplementasi konsep "piping". Bisa digunakan untuk multi-threading Objek PipedOutputStream
SequenceInputStream Menggabungkan dua atau lebih InputStream menjadi satu InputStream Dua atau lebih objek bertipe InputStream atau kontainer bertipe Enumeration yang berisi InputStream yang akan digabungkan
FilterInputStream Kelas abstrak yang merupakan interface dari beberapa kelas bantu untuk menggunakan InputStream lain  

Output Stream
Beberapa kelas turunan dari OutputStream dapat dirangkum dalam tabel di bawah ini :

Kelas  Kegunaan  Argumen yang dibutuhkan untuk membuat objek
ByteArrayOutputStream Membuat buffer dalam memori. Semua data yang kita kirim akan disimpan di memori ini. Opsional untuk memberikan besar buffer yang akan disiapkan
FileOutputStream Untuk menulis informasi ke dalam file String yang berupa nama suatu file, atau objek bertipe File atau FileDescriptor
PipedOutputStream Informasi yang kita kirim di aliran output ini akan berakhir pada objek bertipe PipedInputStream. Mengimplementasi konsep "piping". Bisa digunakan untuk multi-threading Objek PipedInputStream
FilterOutputStream Kelas abstrak yang merupakan interface dari beberapa kelas bantu untuk menggunakan OutputStream lain.  

 Contoh Program
contoh dibawah ini menggunakan class FileInputStream dan FileOutputStream untuk membaca file khusus dan mengcopy isi dari file ini ke file yang lain.

Contoh berikutnya menggunakan class PushbackInputStream yang memanfaatkan
sebuah object FileInputStream dan class PrintStream.

modul JENI-Intro2-Bab12-Stream IO Lanjut