Laboratorium 4

W ramach laboratorium nr 4 przygotujemy aplikację do „programowania” i rysowania wielokątów, a przy okazji przećwiczymy wykorzystanie komponentów Java Swing. Jeśli uda się spełnić wszystkie wymagania funkcjonalne i techniczne, to będzie to bezdyskusyjne potwierdzenie, że macie umiejętności potrzebne do przygotowania interfejsu aplikacji w Waszym projekcie.

 

Zadanie : Program do rysowania wielokątów (5 pkt)

 

Wymagania funkcjonalne

Program rysuje wielokąt o podanej liczbie wierzchołków. Położenia wierzchołków mogą reprezentować wielokąty foremne lub być generowane losowo. Program umożliwia zmianę koloru linii, zmianę koloru tła i grubości linii.

Wymagania techniczne

  1. Wykorzystanie trzech różnych layoutów (np. BorderLayout, FlowLyout, GridLayout)
  2. Wykorzystanie 5 różnych typów komponentów JSwing (np. JRadioButton, JButton, JSlider, JColorChooser, JComboBox, JTextField).
  3. Co najmniej jedna klasa implementuje interfejs ActionListener.
  4. Aplikacja ma pasek menu (JMenu) z co najmniej dwiema opcjami do wyboru (np. różne grubości linii rysowanego wielokąta).
    • Jedna z pozycji w menu powinna ukazywać okienko dialogowe z autorem zadania (imię, nazwisko, numer indeksu).

       

Punktacja:

  1. Stworzenie okna aplikacji i wykorzystanie trzech różnych layoutów – 0.5 pkt
  2. Wykorzystywanie pięciu komponentów różnych typów – 0.5 pkt
  3. Stworzenie i oprogramowanie paska menu – 1 pkt
  4. Narysowanie wielokąta o zadanej ilości wierzchołków - 1 pkt
  5. Oprogramowanie zdarzeń dla stworzonych komponentów – 2 pkt

 

Przykład implementacji

Uwaga - poniżej pokazany jest jedynie (zaawansowany) przykład. By zdobyć 5 punktów nie trzeba uwzględnić wszystkich zaprezentowanych funkcji (patrz wyżej na wymagania i punktację).

 

Link do pliku video

W przykładzie rysowanie wielokąta jest zdefiniowane przez:

  • punkt początkowy (w tym przypadku środek centralnego panelu)

  • ilość wierzchołków (ustawioną za pomocą JSlider)

  • Układ komponentów JRadioButton pozwala na narysowanie wielokąta foremnego lub losowe rozłożenie wierzchołków punktów.

  • Położenie wierzchołków można zmieniać w polach tekstowych na prawym panelu.

  • W menu można wybrać jedną z trzech zdefiniowanych grubości linii.

 

Wskazówki i przykłady

 

 

int lineWidth = 5;
Graphics2D g2d = (Graphics2D) g;
BasicStroke bs1 = new BasicStroke(lineWidth);
g2d.setStroke(bs1);
  • Wzór na położenie wierzchołków wielokąta foremnego o N wierzchołkach:

xk = R * cos((π/2 + 2*π*k) /N)
yk = R * sin((π/2 + 2*π*k) /N)

gdzie: 0<k<N, R - promień okręgu opisanego na wielokącie foremnym.