PO Graficzny interfejs użytkownika - ćwiczenia: Różnice pomiędzy wersjami
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ć?
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
Rozwiązanie wyjaśnienie
Zadanie 2
Zmodyfikuj klasę GridLayoutTest, tak aby to trzecia pozycja w siadce (tam gdzie jest przycisk P3), a nie szósta była pusta.
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
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.
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
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.
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
Wskazówka 2
Rozwiązanie kod
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.
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
Wskazówka 2
Rozwiązanie kod