Modul_01

advertisement
BAB I
PENDAHULUAN
1.1. Bahasa Pemrograman Java
Java memiliki dua fasilitas untuk pemrograman GUI: AWT dan Swing. Versi awal Java memberikan
dukungan grafik yang terbatas. Hanya fitur-fitur grafik minimal yang telah dimasukkan dalam JDK 1.x.
Dukungan Antarmuka Grafis (GUI) dan fitur untuk menggambar grafis telah disediakan dalam paket
Abstract Window Toolkit (AWT). Komponen GUI dalam AWT sangat berat – dimapkan ke dalam komponen
native sistem operasi. Disamping sekumpulan fiturnya yang sederhana untuk membuat elemen-elemen
GUI, AWT memberikan kemampuan untuk mengatur atribut rendering, seperti menggambar dengan
warna dan menggambar grafik sederhana, misalnya garis, persegipanjang, dan oval. Juga ada beberapa
dukungan untuk gambar (image). Tetapi, fitur-fitur ini terbatas. Contohnya, tidak ada cara untuk mengatur
tebal dari garis yang digambar. Karena keterbatasannya, Java versi awal tidak menyediakan dukungan
yang cukup untuk pemrograman grafika komputer modern. Paket Swing adalah desain ulang
pemrograman GUI termasuk API dalam platform Java 2. Kebanyakan komponen Swing tidak berat – tidak
diimplementasikan sebagai komponen asal. Dukungan grafis dalam Java 2 juga lebih ditingkatkan lagi.
Listing 1.1 menunjukkan program GUI Java sederhana menggunakan AWT.
import java.awt.*;
import java.awt.event.*;
public class AWTDemo extends Frame implements ActionListener{
int x = 100;
int y = 100;
public static void main(String[] args) {
Frame frame = new AWTDemo();
frame.setSize(640, 480);
frame.setVisible(true);
}
public AWTDemo() {
setTitle("AWT Demo");
// create menu
MenuBar mb = new MenuBar();
setMenuBar(mb);
Menu menu = new Menu("File");
mb.add(menu);
MenuItem mi = new MenuItem("Exit");
mi.addActionListener(this);
menu.add(mi);
// end program when window is closed
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent ev) {
System.exit(0);
}
};
this.addWindowListener(l);
// mouse event handler
MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent ev) {
x = ev.getX();
y = ev.getY();
repaint();
}
};
addMouseListener(mouseListener);
}
public void paint(Graphics g) {
g.drawOval(x-50, y-50, 100, 100);
}
public void actionPerformed(ActionEvent ev) {
String command = ev.getActionCommand();
if ("Exit".equals(command)) {
System.exit(0);
}
}
}
Ketik kode Java di atas, kemudian compile dan jalankan. Apa yang dihasilkan oleh program tersebut?
Program tersebut adalah sebuah aplkasi GUI menggunakan AWT. Program itu mempunyai sebuah jendela
(window) utama dengan sebuah menu dan sebuah lingkaran. Menunya hanya berisi sebuah item, “Exit”,
yang digunakan untuk menutup jendela (window) ketika dipilih. Penggambaran grafik merespon hasil klik
mouse dengan menggambar objek pada lokasi mouse ketika di-klik.
Kelas AWTDemo didefinisikan menjadi sebuah subkelas Frame (Bingkai). Kelas tersebut mendefinisikan
windows (jendela) program utama. Menu dalam frame (bingkai) dibuat dengan objek dari Kelas MenuBar,
Menu, dan MenuItem. Kelas AWTDemo mengimplementasikan interface ActionListener untuk
memproses ActionEvent yang dibangkitkan oleh pilihan menu. Method actionPerformed yang
didefinisikan dalam interface adalah kendali (handler) untuk kejadian (event). Ketika item menu “Exit”
dipilih, program keluar dengan memanggil method System.exit(0).
Dua pengendali kejadian (event handler) lainnya didefinisikan dalam konstruktor kelas AWTDemo. Sebuah
WindowListener didefinisikan sebagai sebuah kelas anonim dari WindowAdapter. Kelas ini akan
menjalankan method windowClosing untuk menghentikan program ketika menerima kejadian (event)
penutupan (closing) untuk jendela (window). Listener lainnya adalah sebuah MouseListener,
diturunkan dari kelas MouseAdapter. Methode mouseClicked digunakan untuk menangani kejadian
klik-mouse (event mouse-click). Dalam method mouseClicked, lokasi mouse-nya disimpan kedalam
variabel x dan y, dan sebuah panggilan terhadap method repaint dibuat untuk penggambaran kembali dan
memindahkan objek ke lokasi yang baru.
Method paint menggambar sebuah lingkaran beradius 50 dengan method drawOval dalam objek
Graphics. Titik tengah lingkaran ditentukan dengan variabel x dan y.
Method utama (main method) membuat dan menampilkan sebuah instance AWTDemo. Bingkainya (frame)
ditentukan dengan ukuran 640 x 480.
Java 2D
Platform Java memberikan sekumpulan API (application programming interface) yang komprehensif. Java
API mencakup pekerjaan dan aplikasi yang luas: I/O file, grafika, multimedia, database, jaringan,
keamanan, dan sebagainya.
Java 2 membawa kemajuan yang signifikan dalam kemampuan grafik dengan memperkenalkan Swing dan
API Java 2D dan 3D. API yang didesain dengan baik memberikan dukungan komprehensif untuk grafika
komputer. Bersama-sama dengan keuntungan unik yang dapat diperoleh dari bahasa pemrograman Java,
mereka telah mengkombinasikan Java dengan Java 2D dan 3D; sebuah pilihan yang sangat baik untuk
pemrograman grafika dan belajar grafika komputer.
Di bawah ini sebuah contoh yang mendemonstrasikan fitur grafika Java 2D. Kode dalam demo ini
menggunakan kemampuan Java 2D seperti, transparansi, pewarnaan gradien, transformasi, dan pemilihan
jenis huruf yang tidak tersedia dalam Java AWT.
Untuk mencoba kemampuan Java 2D di komputer Anda lakukan tahapan-tahapan berikut:
1. Ketika listing kode berikut.
2. Compile listing kode yang sudah Anda ketikkan
3. Jalankan file dari hasil peng-compile-an tersebut.
4. Tampilan apa yang dihasilkan oleh program tersebut?
Kode Java 2.1 Demo2D.java
/* Demo kemampuan Java 2D
Gunakan perintah: javac Demo2D, untuk meng-compile file ini
Kemudian jalankan file hasil peng-compile-an dengan perintah
java Demo2D
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.font.*;
import java.awt.geom.*;
public class Demo2D extends JApplet {
public static void main(String s[]) {
JFrame frame = new JFrame();
frame.setTitle("Java 2D Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new Demo2D();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
}
public void init() {
JPanel panel = new Panel2D();
getContentPane().add(panel);
}
}
class Panel2D extends JPanel{
public Panel2D() {
setPreferredSize(new Dimension(500, 400));
setBackground(Color.white);
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
// draw an ellipse
Shape ellipse = new Ellipse2D.Double(150, 100, 200, 200);
GradientPaint paint =
new GradientPaint(100,100, Color.white, 400, 400, Color.gray);
g2.setPaint(paint);
g2.fill(ellipse);
// set transparency
AlphaComposite ac =
AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f);
g2.setComposite(ac);
g2.setColor(Color.blue);
// draw transparent text
Font font = new Font("Serif", Font.BOLD, 120);
g2.setFont(font);
g2.drawString("Java", 120, 200);
// get outline of text glyph
FontRenderContext frc = g2.getFontRenderContext();
GlyphVector gv = font.createGlyphVector(frc, "2D");
Shape glyph = gv.getOutline(150,300);
// draw rotated glyph
g2.rotate(Math.PI/6, 200, 300);
g2.fill(glyph);
}
}
Nama kelas komponen Swing secara khusus mempunyai awalan “J”.
Kelas Panel2D extends kelas
JPanel dan overrides method paintComponent. Parameter Grafik dalam method adalah cast to
Graphics2D untuk mengambil manfaat fungsi yang dikembangkan dalam Java 2D. Sebuah lingkaran
digambar dengan warna gradien yang merubah warnanya berdasarkan lokasi. Kemudian composite rule
diatur untuk mencapai derajat transparansi. Huruf glyph untuk string text “2D” diambil dan garis tepinya
(outline) digunakan sebagai bentuk geometri. Bentuk string “2D” diputar 30 derajat (p/6).
Program Java sering dapat ditulis sebagai applet atau aplikasi. Program di atas sebuah contoh program
“dual purpose”. Kelas Demo2D adalah subkelas dari JApplet dan dapat dijalankan sebagai applet.
Tetapi, dalam program ini juga terdapat method utama (main method) sehingga juga dapat dijalankan
sebagai aplikasi. Method utama (main method) membuat sebuah instance Jframe dan menambah sebuah
instance Demo2D ke bingkai (frame). Hasil dari program aplikasi dan aplet hampir mirip.
Download