为什么当我使用 setStroke 时,我的两个多边形都没有边框?

Why doesn't both my Polygons have a border when i use setStroke?

我正在使用以下方法绘制两颗星:

public void draw(Graphics2D g2) {
    g2.drawPolygon(xCoordOfStar, yCoordOfStar, POINTS);
    g2.setStroke(new BasicStroke(5));
}

和:

public void paintComponent(Graphics g)
   {  
     Graphics2D g2 = (Graphics2D) g;
     Star star1 = new Star(100,200,300);
     Star star2 = new Star(200,200,300);
     star1.draw(g2);
     star2.draw(g2);    
}

在另一个class。

出于某种我不知道的原因,只有较大的星星 (star2) 的边框较粗,而 star1 没有任何边框。我做错了什么?

这是一个排序问题。你的第二个多边形有一个边框,因为你的第一个多边形叫做 g2.setStroke(new BasicStroke(5)); 注释掉第一个星形代码,第二个星形现在也失去了它的边框。

要修复它,您只需要重新排列方法:

public void draw(Graphics2D g2) {
    g2.setStroke(new BasicStroke(5));
    g2.drawPolygon(xCoordOfStar, yCoordOfStar, POINTS);
}