import javax.swing.*; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.geom.*; import java.awt.BasicStroke; public class StrokeTest3 extends JPanel{ public static void main(String[] args){ JFrame frame = new JFrame(); StrokeTest3 app = new StrokeTest3(); frame.getContentPane().add(app); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(10, 10, 300, 200); frame.setTitle("ƒ^ƒCƒgƒ‹"); frame.setVisible(true); } public void paintComponent(Graphics g){ Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); BasicStroke joinStroke = new BasicStroke(20.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL); g2.setStroke(joinStroke); GeneralPath polygon = new GeneralPath(); polygon.moveTo(20, 150); polygon.lineTo(50, 50); polygon.lineTo(80, 150); g2.draw(polygon); polygon.reset(); BasicStroke miterStroke = new BasicStroke(20.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER); g2.setStroke(miterStroke); polygon.moveTo(120, 150); polygon.lineTo(150, 50); polygon.lineTo(180, 150); g2.draw(polygon); polygon.reset(); BasicStroke roundStroke = new BasicStroke(20.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND); g2.setStroke(roundStroke); polygon.moveTo(220, 150); polygon.lineTo(250, 50); polygon.lineTo(280, 150); g2.draw(polygon); } }