Почему у обоих моих полигонов нет границы, когда я использую setStroke?

#java #polygon #stroke

#java #полигон #обводка

Вопрос:

Я рисую две звезды, используя:

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

В другом классе.

По какой-то неизвестной мне причине только большая звезда ( star2 ) получает более толстую границу, но star1 не получает никакой границы. Что я делаю не так?

Комментарии:

1. может быть, это потому, что вы устанавливаете обводку ПОСЛЕ рисования многоугольника, а не раньше?

2. я когда-нибудь чувствовал себя глупо сейчас.

Ответ №1:

Это проблема с порядком. Ваш второй полигон получает границу, потому что ваш первый полигон вызвал g2.setStroke(new BasicStroke(5)); комментарий к первому коду звезды, вторая звезда теперь также теряет свою границу.

Чтобы исправить это, вам просто нужно изменить порядок методов:

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