Programowanie obiektowe - JAVA
Informacje ogólne > Laboratorium 2 > Ćwiczenie 3

Ćwiczenie 3

Tworzenie okna z przyciskiem

1. Utworzyć nowy projekt Java w Eclipse.

2. Przy pomocy konstruktora utworzyć klasę o nazwie Okno2, ustawiając tak parametry konstruktora, aby nowa klasa:

  • dziedziczyła po klasie Frame
  • implementowała interfejsy WindowListener i ActionListener (skorzystać z przycisku Add obok pola Interfaces)
  • zawierała metodę main()
  • zawierała definicje konstruktorów z klasy Frame

3. Poprawnie stworzona klasa powinna zawierać oprócz metody main, definicji konstruktorów i siedmiu metod obsługujących interfejs WindowListener (znanych z poprzedniego ćwiczenia) dodatkową metodę:
  public void actionPerformed(ActionEvent arg0) {
  }

Metoda ta służy do osługi zdarzeń interfejsu ActionPerformed, który przechwytuje informację od niektórycvh komponentów AWT (m.in. od przycisków - Button) o tym, że "wykonana została na nich akcja".

4. Zmodyfikować odpowiednie metody tak, aby program tworzył okno (podobnie jak w poprzednim ćwiczeniu).

5. Zadeklarować nową zmienną przycisk klasy Button, tak aby była "widzialna" we wszystkich metodach klasy Okno2. Widoczność zmiennych ograniczona jest przez nawiasy klamrowe {} wewnątrz których została zadeklarowana.

6. W konstruktorze tworzącym nowe okno - Okno2() dodać następujący kod:
   przycisk = new Button("Nazwa przycisku"); //tworzenie obiektu
   przycisk.setBounds(40,40,200,30); // ustawianie rozmiaru przycisku
   przycisk.setVisible(true); // ustawianie widoczności
   add(
przycisk); // dodawanie przycisku do okna - równoważne z this.add(przycisk) - czyli: "do TEGO obiektu-okna dodaj obiekt PRZYCISK"

7. Po uruchomieniu programu powinno być widoczne okno z jednym dużym przyciskiem pokrywającym całe okno (mimo, iż wymiary ustawione w metodzie setBounds są inne). Dzieje się tak dlatego, że w Jave wykorzystywane są tzw. menadżery rozmieszczenia obiektów (LayoutManager) i domyślny manadzer w przypadku pojedynczego obiektu powoduje rozciągniecie go na całe okno.
Rodzaj rozmieszczenia obiektów można zmienić metodą setLayout() podając jako argument jeden z dostępnych "layout'ów". Można również wyłączyć menadżera metodą:
   setLayout(null);
i wówczas rozmieszczenie elementów będzie zależne od ustawień poszczególnych obiektów (setBounds(), setLocation(), itd...).

8. Aby kliknięcie przycisku powodowało jakąś akcję trzeba wykonać dwie czynności.
Po pierwsze należy do przycisku dodać odpowiedni interfejs (ActionListener) oraz zmodyfikować metodę ActionPerformed(), wpisując kod:
  
przycisk.addActionListener(this);
- oznaczający "do obiektu PRZYCISK dodaj interfejs ActionListener, którego obsługa jest w TEJ klasie (analogicznie do opisanego w poprzednim ćwiczeniu dodawania interfejsu obsługi zdarzeń okna).

Wewnątrz metody ActionPerformed() można wpisać dowolny kod, który zostanie wykonany po wciśnięciu przycisku, np.:
System.exit(0); // zakończenie programu
lub:
setTitle(
"Przycisk wciśnięty"); // zmiana tytułu okna
lub:
przycisk.setLocation(przycisk.getX()+ 5, przycisk.getY() +5); // zmiana położenia przycisku
itd...