You’re modifying the Graphics
instance passed into paintComponent()
, which is also used to paint the borders.
Instead, make a copy of the Graphics
instance and use that to do your drawing:
public void drawDashedLine(Graphics g, int x1, int y1, int x2, int y2){
// Create a copy of the Graphics instance
Graphics2D g2d = (Graphics2D) g.create();
// Set the stroke of the copy, not the original
Stroke dashed = new BasicStroke(3, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL,
0, new float[]{9}, 0);
g2d.setStroke(dashed);
// Draw to the copy
g2d.drawLine(x1, y1, x2, y2);
// Get rid of the copy
g2d.dispose();
}