Fáze 1
Požadavky

-          V kódu je datový model pro některé tvary (úsečka, obdélník, elipsa) s nastavitelnou tloušťkou a barvou čáry (bez výplně). Příklad:

obdélník s výškou 300px, šířkou 200px, pozicí X=100px, Y=150px, tloušťkou 15px, barvou #2C2F93

-          V kódu se (dočasně) vytváří konkrétní ukázka obrázku s několika tvary, od každého typu alespoň jeden. Ty jsou po spuštění aplikace vykresleny.

-          Tvary jsou vykresleny na bílém pozadí a aplikace se spouští v maximalizovaném okně.

Tipy

-          Datový model bude potřebovat také třídu pro “celý obrázek”.

-          V metodě Main.main využijte invokeLater.

-          Založte třídu odvozenou od JFrame a jinou třídu odvozenou od JPanel.

-          Panelová třída překryje metodu paintComponent a v může provádět vlastní vykreslování. Příklad:

   @Override

    public void paintComponent(Graphics g) {

        super.paintComponent(g);

        // následuje specifické vykreslování

    }

-          Objekt reprezentující obrázek použijte jako parametr konstruktoru panelové třídy (aby obrázek existoval předtím, než vzniká panel, který ho zobrazí).

-          Doporučený postup: Třídy pro obdélník, elipsu atd. budou implementovat společné rozhraní (níže jako MujTvar). Toto rozhraní bude mít metodu např. Draw(Graphics2D g). Např. obdélník v rámci této metody vykreslí na obrazovku obdélník prostřednictvím objektu typu Graphics2D.

Tip k vytváření tvarů

List<MujTvar> list = new ArrayList<>;

list.add(new MujObdelnik(100, 100, 300, 400, 50, "#5f55ff"));

list.add( new MojeElipsa(300, 300, 500, 600, 20, "#0f55ff"));

Tip k panelové třídě

 public class MujPanel extends JPanel

 {

   //…

    public MujPanel(MujObrazek obrazek)

    {

      this.obrazek = obrazek;

    }

 

    @Override

    public void paintComponent(Graphics g)

    {

        super.paintComponent(g);

        // následuje specifické vykreslování

    }

 }

Tip k vykreslování

Ukázka metody, která by se mohla vyskytovat ve třídě Rectangle, čímž implementuje společné rozhraní:

    @Override

    public void Draw(Graphics2D graphics)

    {

        graphics.setStroke(new BasicStroke(strokeWidth));

        graphics.setColor(Color.Decode(color));

        graphics.drawRect((int)x,(int)y,(int)width,(int) height);

    }