PO Graficzny interfejs użytkownika - ćwiczenia: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Jsroka (dyskusja | edycje)
Jsroka (dyskusja | edycje)
Linia 206: Linia 206:
       '''public''' '''void''' run() {
       '''public''' '''void''' run() {
         '''new''' Zad4();
         '''new''' Zad4();
      }
    });
  }
}
</div>
</div>}}
== Zadanie 5 ==
Przygotuj program wyświetlający przycisk, który po najechaniu na niego myszką zmienia położenie. Do zmiany położenia użyj ''CardLayout''.
{| border="1"
|+ Podgląd działającego rozwiązania
! Archiwum JAR !! Applet
|-
| Żeby uruchomić przykład [[media:PO_GUI_Zad5.jar|Po_GUI_Zad5.jar]] ściągnij najpierw archium jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. || <applet code="applet.Zad5Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet>
|}
{{wskazowka | 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
Dodaj do przycisków ''MouseListener'', a kod zamieniający kartki umieść w metodzie ''mouseEntered(MouseEvent)''
</div>
</div>}}
{{wskazowka | 2||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
Jeżeli używasz ''CardLayout'' w głównym kontenerze, jako parametr ''parent'' metod first()'', ''last()'', ''next()'' i ''previous()'' przekazuj przekazuj kontener uzyskany z głównego kontenera przy pomocy metody ''getContentPane()'', a nie sam główny kontener.
</div>
</div>}}
{{rozwiazanie| kod ||<div class="mw-collapsible mw-made=collapsible mw-collapsed"><div class="mw-collapsible-content" style="display:none">
'''import''' java.awt.*;
'''import''' java.awt.event.*;
'''import''' javax.swing.*;
'''public''' '''class''' Zad5 '''extends''' JFrame {
  Box box1, box2;
  JButton p1, p2;
  CardLayout karty;
  JFrame okno;
  //obiekty klasy wewnętrznej mogę korzystać ze składowych obiektu, który je utworzył
  '''class''' ZamianaKart '''extends''' MouseAdapter {
    '''public''' '''void''' mouseEntered(MouseEvent e) {
      //jeżeli używasz CardLayout w głównym kontenerze,
      //metodą oczekującym "the parent container in which to do the layout"
      //przekazuj kontener uzyskany z głównego kontenera przy pomocy metody getContentPane(),
      //a nie sam główny kontener
      karty.next(okno.getContentPane());
    }
  }
 
  Zad5() {
    '''super'''("Okno Zad5");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    okno = '''this''';
   
    box1 = '''new''' Box(BoxLayout.X_AXIS);
    box1.add(Box.createRigidArea('''new''' Dimension(50,0)));
    p1 = '''new''' JButton("Kliknij");
    p1.addMouseListener('''new''' ZamianaKart());
    box1.add(p1);
    box2 = '''new''' Box(BoxLayout.X_AXIS);
    box2.add(Box.createRigidArea('''new''' Dimension(170,0)));
    p2 = '''new''' JButton("Kliknij");
    p2.addMouseListener('''new''' ZamianaKart());
    box2.add(p2);
    karty = '''new''' CardLayout();
    setLayout(karty);
    //okno.setLayout('''new''' GridLayout(2,2));
    add(box1, "lewo");
    add(box2, "prawo");
   
    setSize(300,150);
    setVisible('''true''');
  }
 
  '''public''' '''static''' '''void''' main(String[] args) {
    //aby uniknąć zakleszczeń, tworzenie GUI zawsze zlecamy dla wątku obsługi zdarzeń
    javax.swing.SwingUtilities.invokeLater('''new''' Runnable() {
      '''public''' '''void''' run() {
        '''new''' Zad5();
       }
       }
     });
     });

Wersja z 03:55, 30 sie 2006

Zadanie 1

W klasie WitajŚwiecie umieść w oknie głównym drugą etykietę z tekstem. Użyj w tym celu bezparametrowej metody add(). Czy obie etykiety są widoczne? Jak to wyjąśnić?

Podgląd działającego rozwiązania
Archiwum JAR Applet
Żeby uruchomić przykład Po_GUI_Zad1.jar ściągnij najpierw archium jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. <applet code="applet.Zad1Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet>

Rozwiązanie kod

{{{3}}}

Rozwiązanie wyjaśnienie

{{{3}}}

Zadanie 2

Zmodyfikuj klasę GridLayoutTest, tak aby to trzecia pozycja w siadce (tam gdzie jest przycisk P3), a nie szósta była pusta.

Podgląd działającego rozwiązania
Archiwum JAR Applet
Żeby uruchomić przykład Po_GUI_Zad2.jar ściągnij najpierw archium jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. <applet code="applet.Zad2Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet>

Rozwiązanie kod

{{{3}}}

Zadanie 3

Wyświetl okno o rozmiarach 300 na 150, zawierające na górze pięć przycisków: P1, P2, P3, P4 i Bardzo długi przycisk rozmieszczonych przez GridLayout o dwóch wierszach i trzech kolumnach, a na dole takie same pięć przycisków rozmieszczonych przy pomocy FlowLayout. Grupy przycisków powinny być rozmieszczone na oknie przez BorderLayout. Sprawdź czy wszystkie przyciski mieszczą się w oknie o tych rozmiarach.

Podgląd działającego rozwiązania
Archiwum JAR Applet
Żeby uruchomić przykład Po_GUI_Zad3.jar ściągnij najpierw archium jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. <applet code="applet.Zad3Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet>

Rozwiązanie kod

{{{3}}}

Zadanie 4

Używając BoxLayout i obiektów klasy Box przygotuj program wyświetlający 5 przycisków rozmieszczonych w dwóch kolumnach (w pierwszej trzy w drugiej dwa). Niech w każdej kolumnie przyciski będą wyśrodkowane. Porównaj efekt z przykładem GridLayoutTest.

Podgląd działającego rozwiązania
Archiwum JAR Applet
Żeby uruchomić przykład Po_GUI_Zad4.jar ściągnij najpierw archium jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. <applet code="applet.Zad4Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet>

Wskazówka 1

{{{3}}}

Wskazówka 2

{{{3}}}

Rozwiązanie kod

{{{3}}}

Zadanie 5

Przygotuj program wyświetlający przycisk, który po najechaniu na niego myszką zmienia położenie. Do zmiany położenia użyj CardLayout.

Podgląd działającego rozwiązania
Archiwum JAR Applet
Żeby uruchomić przykład Po_GUI_Zad5.jar ściągnij najpierw archium jar na swój komputer (możesz to zrobić klikając na odnośniku prawym klawiszem myszy i wybierając "Zapisz jako...") i uruchom jak zwykły program. <applet code="applet.Zad5Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet>

Wskazówka 1

{{{3}}}

Wskazówka 2

{{{3}}}

Rozwiązanie kod

{{{3}}}