import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.awt.font.*;import java.awt.geom.*;public class TestStroke1 extends JApplet {public static void main(String s[]) {JFrame frame = new JFrame();frame.setTitle("Test Stroke-1");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JApplet applet = new TestStroke1();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;//menggambar sebuah garis dengan ketebalan 3 (piksel)BasicStroke bsGarisTebal = new BasicStroke(3.0f);g2.setStroke(bsGarisTebal);g2.drawLine(30,50,30,250);//array untuk mendiskkripsikan pola garis putus-putus.float[] dashPattern;//offset dimana pola garis putus-putus harus mulai.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 BasicStroke 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 10dashPhase = 10.0f;//Pendefinisain 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);}}
Listing di atas mempertunjukkan efek grafik yang menggambar garis dengan tipe garis (stroke) yang berbeda-beda.