Membuat Tipe-Tipe Garis di Java 2D

Dalam grafika komputer tidak pernah lepas dari geometri. Yang meliputi pemodelan garis-garis. Dengan garis maka dapat terbentuk sebuah objek geometri.

Di Java 2D tersedia interface stroke untuk menampilkan garis-garis. Implementasi interface diantaranya menggunakan BasicStroke. Kelas BasicStroke menyediakan pengaturan untuk bentuk garis, lebar, gabungan antar garis dan garis putus-putus.

Berikut adalah contoh implementasi BasicStroke.

strokePanel.java
/**
*
* @author Wim Sonevel
*/
import java.awt.*;
import javax.swing.JPanel;
public class strokePanel extends JPanel{

public strokePanel(){
setPreferredSize(new Dimension(500, 400));
setBackground(Color.WHITE);
}

@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D)g;
//menggambar sebuah garis dengan ketebalan 3 pixel
BasicStroke bsGarisTebal=new BasicStroke(3.0f);
g2.setStroke(bsGarisTebal);
g2.drawLine(30, 50, 30, 250);

//array untuk mendeskripsikan garis putus - putus
float[]dashPattern;

//offset dimana garis putus-putus harus dimulai
float dashPhase=0.0f;

//pola garis putus-putus
dashPattern=new float[10];
dashPattern[0]=4.0f;
dashPattern[1]=5.0f;
dashPattern[2]=8.0f;
dashPattern[3]=5.0f;
dashPattern[4]=12.0f;
dashPattern[5]=5.0f;
dashPattern[6]=16.0f;
dashPattern[7]=5.0f;
dashPattern[8]=20.0f;
dashPattern[9]=5.0f;

//pendefinisian dari Basic Stroke yang akan digunakan
BasicStroke bsBerpola=new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 2.0f, dashPattern, dashPhase);
g2.setStroke(bsBerpola);

//menggambar sebuah garis dengan pola putus-putus
g2.drawLine(60, 50, 60, 250);

//sebuah pola putus-putus yang sederhana dengan panjang garis(dash) 20
//dan lebar jarak 10
dashPattern=new float[2];
dashPattern[0]=20;
dashPattern[1]=10;
//pendefinisian BasicStroke yang akan digunakan
BasicStroke bsDashed=new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 2.0f, dashPattern, dashPhase);
g2.setStroke(bsDashed);

//menggambar sebuah garis (vertikal) dengan pola yang telah
//didefinisikan sebelumnya
g2.drawLine(120, 50, 120, 250);

//menggambar sebuah garis (diagonal) dengan pola yang
//telah didefinisikan sebelumnya
g2.drawLine(150, 50, 350, 250);

//menggunakan pola garis putus-putus yang sama seperti sebelumnya
//tetapi dengan offset 10
dashPhase=10.0f;
//pendefinisian BasicStroke yang akan digunakan
BasicStroke bsDashedShifted=new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 2.0f, dashPattern, dashPhase);
//menggambar sebuah garis (vertikal) dengan pola putus-putus yang telah
//didefinisikan sebelumnya
g2.setStroke(bsDashedShifted);
g2.drawLine(90, 50, 90, 250);
}
}


Kemudian kelas panel diatas dipanggil di kelas TesStroke.java
/**
*
* @author Wim Sonevel
*/
import javax.swing.*;
public class TesStroke extends JApplet{

@Override
public void init(){
JPanel panel=new strokePanel();
getContentPane().add(panel);
}

public static void main(String[]args){
JFrame frame=new JFrame();
frame.setTitle("Garis");
frame.setVisible(true);
//frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet=new TesStroke();
applet.init();
frame.getContentPane().add(applet);
frame.pack();

}
}


Outputnya :

Berlangganan update artikel terbaru via email: