Drawing dashed line in java

前端 未结 3 829
甜味超标
甜味超标 2020-12-16 10:47

My problem is that I want to draw a dashed line in a panel, I\'m able to do it but it draw my border in dashed line as well, which is oh my god!

Can someone please e

3条回答
  •  一向
    一向 (楼主)
    2020-12-16 11:19

    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){
    
            //creates 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);
            g2d.drawLine(x1, y1, x2, y2);
    
            //gets rid of the copy
            g2d.dispose();
    }
    

提交回复
热议问题