Zilong Mobile Legends

Showing posts with label Java. Show all posts
Showing posts with label Java. Show all posts

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.

READMORE

Bookmark and Share

Wednesday, August 8, 2012

Cara Memasukkan Gambar ImageIcon Dengan Bahasa Pemprograman Java

Tutorial cara memasukan gambar dengan bahasa pemprograman java ini sebenarnya hanya untuk tujuan dokumentasi pribadi saya, tetapi silahkan saja jika ingin anda pelajari juga karena tutorial cara memasukan gambar dengan bahasa pemprograman java yang tersebar di internet sebagian besar penjelasannya cukup membingungkan apalagi untuk pemula seperti saya ini. Hal yang kita lakukan adalah membuat dua kelas, kelas yang satu sebagai frame dan kelas yang kedua sebagai tempat gambarnya(bisa menggunakan JPanel atau JComponent).



Kelas KapalTerbang

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

public class KapalTerbang extends JFrame {
public static void main (String [] abc) {
        KapalTerbang window = new KapalTerbang();
        window.setTitle("Kapal Terbang");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setContentPane(new KapalPanel());
        window.pack();
        window.setLocationRelativeTo(null);
        window.setVisible(true);
}
}









Kelas KapalPanel

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

public class KapalPanel extends JPanel {
private ImageIcon _image; // definisi
KapalPanel(){
         setPreferredSize(new Dimension(400, 400)); // mengatur lebar dan tinggi frame panel
         setBackground(Color.blue); // memberi warna latar panel
         ClassLoader cldr = this.getClass().getClassLoader(); // memanggil kelas untuk meload gambar
         String imagePath = "plane.png"; // hanya static path
         URL imageURL = cldr.getResource(imagePath); // memanggil/tuju path
         ImageIcon img = new ImageIcon(imageURL); // membuat gambar berdasarkan path yang telah dituju
         // mengirim hasil new ImageIcon ke _image, ini harus dilakukan agar tidak terjadi error  thread
        _image=img;
}

   @Override
    public void paintComponent(Graphics g) {
         super.paintComponent(g);
        _image.paintIcon(this, g, 100, 100); // menggambar image sekaligus meletakannya pada 100,100
        }   
}

READMORE

Bookmark and Share

Tuesday, January 17, 2012

Contoh OOP Sederhana | Java

Ini sekedar mendokumentasikan pembelajaran saya, jika suatu saat lupa bisa mencari referensi lagi dari tulisan saya ini. Saya belajar bahasa program secara otodidak, jadi kalau ada bahasa/istilah-istilah pemprograman yang salah itu mungkin saja ada. Silahkan buat anda yang merasa tulisan ini bermanfaat untuk dipelajari untuk memahami dan mempelajarinya.


Kelas Utamanya:

import java.util.*;
public class kelasUtama {
int angkah1,angkah2;
Scanner input=new Scanner(System.in); // buat scanner agar user bisa memasukan angka.

kelasKedua hitung; /* 1. Jika input dinamis/variabel maka tidak jadi kelasKedua hitung = new kelasKedua(int,int) * 2. dan kelasKedua hitung <== hitung adalah variabel buatan, * 3. tidak akan bisa jika int hitung karena hitung=new kelasKedua(angkah1,angkah2) pada contoh di bawah */

// buat konstruktor
kelasUtama(){
mulai(); // sisipkan/panggil void mulai
}

void mulai(){
System.out.println("Masukan angka1: ");
angkah1=input.nextInt(); // menyimpan inputan pertama pada variabel angkah1 System.out.println("Masukan angka2: ");
angkah2=input.nextInt(); // menyimpan inputan kedua pada variabel angkah2 hitung=new kelasKedua(angkah1,angkah2); // dipakainya di sini karena inputnya dinamis/variabel System.out.println(hitung.jumlahKan()); // mencetak hasilnya dengan memanggil fungsi jumlahKan()

// mencetak dengan memanggil fungsi getHasil()
System.out.println("Memakai perintah getHasil(): "+hitung.getHasil());

// input angka secara konstanta(tetap), contoh di bawah ini dengan angka 6
hitung.setInput(6);

// cetak proses setInput dengan fungsi System.out.println("Memakai perintah setInput(): "+hitung.getInput()); }

public static void main (String [] abc){
new kelasUtama(); // menjalankan kelasUtama
}

}




Kelas Keduanya:

public class kelasKedua{
// mendeklarasikan variabel
int angka1,angkau2; int angset;
/* misalkan kelasKedua(4,4) <== user menginput angka ke-1 4, dan angka kedua juga angka 4. penjelasan di atas untuk ==> kelasKedua(int angka1,int angka2) */

public kelasKedua(int angka1,int angka2){
this.angka1=angka1; // this.angka1=angka1 <== karena nama variabelnya sama maka ditambah this angkau2=angka2; // tak perlu ada this, karena nama variabel kelas beda.
}

/* buat operasi perhitungannya, di sini tidak perlu membuat variabel lagi semisal variabel hasil, seperti hasil=angka1+angka2; <== karena akan minta return, jadi sebenarnya variabel hasil di sini sekarang adalah jumlahKan()... Artinya jumlahKan()=angka1+angka2; BUKAN hasil=angka1+angka2 */

int jumlahKan(){
return angka1+angkau2;
}

/* sebenarnya dengan cara hitung.jumlahKan() yang ada pada kelasUtama sudah ada hasilnya, tapi ini cara lain untuk memprint/menampilkannya, jadi hitung.getHasil()*/

int getHasil(){
return jumlahKan();
}

/* membuat inputan konstanta, misalkan pada kelasUtamanya setInput(6) maka 6++, lalu untuk bisa mencetak hasilnya buat getInput() dengan mereturn variabel angset */

void setInput(int ang1){
angset=ang1; angset++;
}

/* agar bisa mencetak pada kelasUtamanya ==> hitung.getInput(); yang artinya hasilnya=angset; */ int getInput(){
return angset;
}

} // end class

READMORE

Bookmark and Share