Friday, August 10, 2012

Draw atau Paint ImageIcon Pada Bahasa Java Dengan Tambahan Event Keylistener

Menggambar atau drawing ImageIcon pada bahasa pemprograman java dan ditambahkan dengan event keylistener. Script ini sebenarnya lanjutan dari script sebelumnya yang telah saya posting.




Kelas KapalTerbang:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.URL;

public class KapalTerbang extends JFrame {
        int xPos = 0;   
        int yPos = 0;
        private static KapalAtur image;
KapalTerbang(){
         ClassLoader cldr = this.getClass().getClassLoader();
         String imagePath = "plane.png";
         URL imageURL = cldr.getResource(imagePath);
         ImageIcon img = new ImageIcon(imageURL);      
         KapalAtur atur = new KapalAtur(img);
         atur.moveTo(xPos, yPos);
         image=atur;
}
public static void main (String [] abc) {
        KapalTerbang window = new KapalTerbang();
        window.setTitle("Kapal Terbang");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setContentPane(new KapalPanel(image));
        window.pack();
        window.setLocationRelativeTo(null);
        window.setVisible(true);
}
}





Kelas KapalAtur

import java.awt.*;
import javax.swing.*;

class KapalAtur {

    private ImageIcon _image;
    private int       _x;
    private int       _y;
   
    public KapalAtur(ImageIcon image) {
        _image = image;
    }
   
    public void moveTo(int x, int y) {
        _x = x;
        _y = y;
    }
   
    public boolean contains(int x, int y) {
        return (x > _x && x < (_x + getWidth()) &&
                y > _y && y < (_y + getHeight()));
    }
   
    public int getWidth() {
        return _image.getIconWidth();
    }
   
    public int getHeight() {
        return _image.getIconHeight();
    }
   
    public int getX() {
        return _x;
    }
   
    public int getY() {
        return _y;
    }
   
    public void draw(Graphics g, Component c) {
        _image.paintIcon(c, g, _x, _y);
    }

}






Kelas KapalPanel

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


public class KapalPanel extends JPanel implements KeyListener{
private KapalAtur _image;
private static final Color BACKGROUND_COLOR = Color.GREEN;
public KapalPanel(KapalAtur images){
         setPreferredSize(new Dimension(400, 400));
         setBackground(Color.blue);
         this.addKeyListener(this);
         this.setFocusable(true);
         _image=images;
}
         @Override
         public void paintComponent(Graphics g) {
         int width = getWidth();
         int height = getHeight();
         g.setColor(BACKGROUND_COLOR);
         g.fillRect(0, 0, width, height);
         _image.draw(g, this);   
         }
        
         public void keyTyped(KeyEvent kevt) {
         }
        
         public void keyPressed(KeyEvent e) {          
         switch (e.getKeyCode()) {
            case KeyEvent.VK_UP   : 
            _image.moveTo(0, _image.getY()-10);
            break;
            case KeyEvent.VK_DOWN :
            _image.moveTo(0, _image.getY()+10);
            break;
         }         
         this.repaint();
         }
        
         public void keyReleased(KeyEvent ke) {}
   
}




Penjelasan:

Pada kelas KapalTerbang membuat Frame dan memanggil gambar berdasarkan path penyimpanannya kemudian gambar itu diatur letaknya (pada script moveTo) dengan cara memanggil kelas KapalAtur, dan pendefinisian ulang, yaitu pada script image=atur, selanjutnya image bisa dimasukkan ke KapalPanel.

Pada kelas KapalAtur berfungsi untuk mengatur awal letak gambar kemudian memberikan nilai koordinat gambar terbaru, selain itu juga pada kelas ini, gambar sudah mulai digambar pada void draw.

Berarti sekarang gambar sudah nampak dan sudah diletakkan pada koordinat tertentu, kemudia pada kelas KapalTerbang, ada script:
window.setContentPane(new KapalPanel(image)); 
artinya gambar yang sudah siap maka ditampilkan pada panel.

Pada kelas KapalPanel sebagai event keylistener dan saling bertukar(mengirim dan menerima) koordinat terbaru dengan kelas KapalAtur. Pada kelas KapalPanel, script:
this.addKeyListener(this);
this.setFocusable(true); 
tidak boleh dihapus karena perintah itu adalah kelasnya keylistener agar dapat berfungsi.

Related Posts by Categories



Bookmark and Share

0 comments: