Skip to content
On this page

Egg Tag (Prüfung 1 FS24)

Repository

https://gitlab.fhnw.ch/oop/oop2-versuche/q01-fs24-eggtag.git

Die URL auf GitLab: https://gitlab.fhnw.ch/oop/oop2-versuche/q01-fs24-eggtag

Versuch als PDF

Zeit

  • 45 min

Hilfsmittel

  • Erlaubt: alte Übungen, Slides, Material oop1 + oop2
  • Verboten: Kommunikation, AI (führt zu Note 1)

Ziel: Erstellen Sie folgendes GUI für die Applikation "Egg Tag"

Vorgehen

Implementieren Sie den Konstruktor von View gemäss weiterem Vorgehen. Alle Attribute der Klasse View sind bereits für Sie angelegt worden. Es gilt die Komponenten entsprechend Vorlage im GUI zu positionieren und die Callbacks der Listener für die Komponenten zu registerien.

  • ☑ Importieren Sie das Projekt und starten Sie main in der Klasse App.java, um zu validieren, dass der Import geklappt hat.

Komponenten

  • Auf der linken Seite finden Sie das eggPanel der Klasse EggPanel.
  • Unter dem eggPanel finden Sie drei Buttons, btOne, btTwo, btThree. Sie alle teilen sich den Platz unter dem eggPanel. Das Gewicht in Y-Richtung der drei Buttons ist 1.
  • Auf der rechten Seite findet sich das colorPanel vom Typen ColorPicker. Die Zelle, welches es beinhaltet, soll weder in X- noch in Y-Richtung wachsen.
  • Unter dem colorPanel befindet sich der Slider sliderSize, welcher die Grösse der Eier konfiguriert.
  • Unter dem sliderSize befindet sich das PointLabel lblPunkte.
  • Ganz unten Rechts befindets sicher der JButton btStart.

1. EggPanel, ColorPanel, Buttons und JSlider

  • ☑ Setzen Sie das Layout von View im Konstrukor als GridBagLayout.
  • ☑ Fügen Sie alle Komponenten dem GridBagLayout mit entsprechenden GridBagConstraints hinzu.
  • ☑ Die Methode label von View nimmt eine JComponent und einen String entgegen, und dekoriert sie mit einem TiteledBorder. Labeln Sie die Komponeneten colorPanel, sizePanel und lblPunkte entsprechend dem Screenshot.
  • ☑ Rufen Sie setEggSize von eggPanel auf und übergeben Sie den aktuellen Wert, den Sie mit sliderSize.getValue() erhalten.
  • ☑ Rufen Sie von btStart die Methode setFont auf und übergeben Sie als Parameter einen Font, welchen Sie mit Utility.loadFont().deriveFont(20f) generieren.
  • ☑ Setzen Sie den Text vom lblPunkte um den Inhalt des Attributs points zu repräsentieren.

2. Listeners

Registeren und implementieren Sie folgende Listener im Konstruktor:

KomponenteListenerBezeichnung
btStartActionListenerRuft die Methode start \ von eggPanel auf.
sliderSizeChangeListenerRuft die Methode setEggSize von eggPanel auf und übergibt den Wert von sliderSize.
btOneActionListenerRuft die Methode guess von Eggpanel auf. Übergibt den Wert 0 und falls guess true zurückgibt, wird points um eins inkrementiert und das Label mit der Punktezahl entsprechend neuem Wert aktualisiert.
btTwoActionListenerAnalog zu btOne aber übergibt 1.
btThreeActionListenerAnalog zu btOne aber übergibt 2.
colorPanelColorListenerMit addColorListener kann dem Panel ein ColorListener hinzugefügt werden. Im Callback rufen Sie von eggPanel die Methode setColor auf und übergeben die erhaltene Farbe.

ColorListener

ColorListener muss noch importiert werden (z.B. mit SHIFT + CTRL + O)