2016-10-01 2 views
0

Je dessine deux étoiles en utilisant:Pourquoi mes deux Polygones n'ont-ils pas de bordure quand j'utilise setStroke?

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

et:

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);  
} 

Dans l'autre classe.

Pour une raison qui m'est inconnue, seule l'étoile la plus grande (star2) obtient une bordure plus épaisse, alors que star1 n'obtient aucune bordure. Qu'est-ce que je fais mal?

+0

pourrait-il être parce que vous définissez la course après avoir dessiné le polygone au lieu d'avant? – nhouser9

+0

est-ce que je me sens toujours stupide maintenant. – Brow

Répondre

0

C'est un problème de commande. Votre deuxième Polygone obtient une bordure parce que votre premier Polygone a appelé le g2.setStroke(new BasicStroke(5)); Commentez le premier code étoile, la deuxième étoile perd également sa bordure.

Pour résoudre ce problème, il vous suffit de réorganiser les méthodes:

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