Appearance
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
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 KlasseApp.java
, um zu validieren, dass der Import geklappt hat.
Komponenten
- Auf der linken Seite finden Sie das
eggPanel
der KlasseEggPanel
. - Unter dem
eggPanel
finden Sie drei Buttons,btOne
,btTwo
,btThree
. Sie alle teilen sich den Platz unter demeggPanel
. Das Gewicht inY
-Richtung der drei Buttons ist1
. - Auf der rechten Seite findet sich das
colorPanel
vom TypenColorPicker
. Die Zelle, welches es beinhaltet, soll weder inX-
noch inY-Richtung
wachsen. - Unter dem
colorPanel
befindet sich der SlidersliderSize
, welcher die Grösse der Eier konfiguriert. - Unter dem
sliderSize
befindet sich dasPointLabel
lblPunkte
. - Ganz unten Rechts befindets sicher der
JButton
btStart
.
1. EggPanel, ColorPanel, Buttons und JSlider
- ☑ Setzen Sie das Layout von
View
im Konstrukor alsGridBagLayout
. - ☑ Fügen Sie alle Komponenten dem GridBagLayout mit entsprechenden GridBagConstraints hinzu.
- ☑ Die Methode
label
vonView
nimmt eineJComponent
und einen String entgegen, und dekoriert sie mit einemTiteledBorder
. Labeln Sie die KomponenetencolorPanel
,sizePanel
undlblPunkte
entsprechend dem Screenshot. - ☑ Rufen Sie
setEggSize
voneggPanel
auf und übergeben Sie den aktuellen Wert, den Sie mitsliderSize.getValue()
erhalten. - ☑ Rufen Sie von
btStart
die MethodesetFont
auf und übergeben Sie als Parameter einen Font, welchen Sie mitUtility.loadFont().deriveFont(20f)
generieren. - ☑ Setzen Sie den Text vom
lblPunkte
um den Inhalt des Attributspoints
zu repräsentieren.
2. Listeners
Registeren und implementieren Sie folgende Listener im Konstruktor:
Komponente | Listener | Bezeichnung |
---|---|---|
btStart | ActionListener | Ruft die Methode start \ von eggPanel auf. |
sliderSize | ChangeListener | Ruft die Methode setEggSize von eggPanel auf und übergibt den Wert von sliderSize . |
btOne | ActionListener | Ruft 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. |
btTwo | ActionListener | Analog zu btOne aber übergibt 1 . |
btThree | ActionListener | Analog zu btOne aber übergibt 2 . |
colorPanel | ColorListener | Mit 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
)