Menggambar Baling-baling Pada Java dengan Swing & AWT Graphics

0 Comments


Di pemrograman GUI, kita kadang kala membutuhkan menampilkan gambar atau logo pada aplikasi kita. Cara yang paling mudah adalah dengan menampilkan icon atau gambar berformat .png atau .bmp dan sejenisnya pada Label. Begitupun di Java, saat kita membutuhkan untuk menampilkan gambar kita bisa menggunakan bantuan JLabel dan men-set icon dari JLabel tersebut.

Cara Lain Menampilkan Gambar di Java GUI

Ada cara lain yang bisa menjadi pilihan untuk menampilan gambar di Java. Yaitu dengan menggambar-nya sendiri langsung pada JPanel dengan bantuan class Graphics dari Java AWT. Nah pada posting kali ini saya akan membuat contoh bagaimana menggambar pada JPanel menggunakan class Graphic dari AWT.

Class Graphics Java AWT

Pada contoh berikut, saya ingin menggambar baling-baling dengan 4 daun menggunakan class Graphic dari AWT. Sebelum memulai membuat kode untuk gambarnya, sedikit saya ingin menjelaskan tentang class Graphics AWT. Ada beberapa method yang bisa kita gunakan untuk membuat bangun datar / atau menggambar pada Container atau JPanel, diantaranya:

  • drawString(String s, int x, int y) digunakan untuk menggambar string dimulai dari koordinat(x,y)
  • drawLine(int x1, int y1, int x2, int y2) digunakan untuk menggambar garis lurus dari koordinat(x1,y1) sampai dengan (x2,y2(
  • drawRect(int x, int y, int Panjang, int Tinggi) digunakan untuk menggambar persegi panjang dari koordinat(x,y) dengan ukuran Panjang dan Tinggi.
  • dan lain-lain, untuk mengetahui daftar lengkap method-method yang bisa digunakan anda bisa melihat di sini. In sya Allah, saya juga akan membahas-nya pada tulisan-tulisan yang lain.
Nah, untuk menggambar baling-baling saya menggunakan method fillArc(int x, int y, int lebar, int tinggi, int sudutAwal, int besarSudut) yang dapat digunakan untuk menggambar busur lingkaran dengan terisi warna. Idenya adalah menggambar empat buah busur lingkaran dengan ukuran lebar dan tinggi yang sama, koordinat titik pusat yang sama serta besar sudut yang sama. Kira-kira kalau digambarkan seperti gambar di bawah ini.
Menggambar baling-baling dengan java Awt

Pada gambar di atas saya menggambar empat buah busur lingkaran sebesar masing-masing 30° dimulai dari sudut -15 °, kemudian jarak dari masing-masing sudut saya buat masing-masing 60° agar terlihat seimbang.

Menggambar Empat Busur dengan pusat yang sama

Untuk menggambar empat buah busur tersebut, silakan gunakan kode berikut ini :
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Graphics;

public class ContohDraw extends JFrame{
 public ContohDraw(){
  setTitle("Aplikasi Menggambar Busur");
  add(new Panel());
 }
 public static void main(String[] args){
  ContohDraw frame = new ContohDraw();
  frame.setSize(300, 400);
  frame.setLocationRelativeTo(null);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.setVisible(true);
 }
}

class Panel extends JPanel{
 protected void paintComponent(Graphics g){
  super.paintComponent(g);
  
  int xPusat = getWidth()/2;
  int yPusat = getHeight()/2;
  int radius = (int)(Math.min(getWidth(), getHeight())*0.4);
  
  int x = xPusat - radius;
  int y = yPusat - radius;
  
  g.fillArc(x, y, 2*radius, 2*radius, -15, 30);
  g.fillArc(x, y, 2*radius, 2*radius, 75, 30);
  g.fillArc(x, y, 2*radius, 2*radius, 165, 30);
  g.fillArc(x, y, 2*radius, 2*radius, 255, 30);
 }
}
Gambar yang akan dihasilkan setelah dicompile dan dijalankan seperti ini :
Contoh Aplikasi Graphics AWT Java-Busur

Penjelasan Kode

Mari kita bahas baris demi baris kode di Java di atas.
  • Baris 1 s/d 3 adalah kewajiban utama kita saat membuat coding java, mengimpor class-class yang dibutuhkan. Saya mengekspor JFrame untuk tampilan GUI-nya, kemudian JPanel untuk tempat menggambar dan menenpelkan pada Frame, terakhir class Graphics dari AWT ini inti dari yang kita kerjakan
  • Selanjutnya baris 5 s/d17 kita membuat class ContohDraw yang meng-extends class JFrame dari Swing. Pada class ini kita membuat Konstruktornya (baris 6 s/d 9), mengeset judul Jendela GUI-nya, dan menambahkan panel yang akan kita buat pada baris 19. Main method-nya kita letakkan di class ContohDraw ini, mengatur ukuran jendela Frame-nya, Operasi saat tombol close ditekan dan menampilkannya ke layar dengan method setVisible(true)
  • Baris 19 adalah class Panel yang berfungsi sebagai tempat kita menggambar busur lingkaran nanti
  • Method paintComponent(Graphic g) berfungsi sebagai method yang menggambar 4 busur lingkaran yang nanti kita tulis dengan method fillArc() pada baris 30 s/d 33. Variabel xPusat dan yPusat digunakan untuk menentukan koordinat titik pusat busur. Saya menghitungnya dengan cara membagi dua lebar dan tinggi Panel. Variabel radius adalah besar jari-jari lingkaran yang akan kita buat.
  • Baris 30 s/d 33 adalah proses pemanggilan method fillArc() untuk menggambar 4 buah busur lingkaran masing-masing sebesar 30° dimulai dari sudut -15°.
Oke, kira-kira seperti itu. Semoga bermanfaat dan  terima kasih sudah baca :). Salam.

Baca Tulisan Lainnya Juga :)