PO Graficzny interfejs użytkownika - ćwiczenia: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
(Nie pokazano 8 wersji utworzonych przez 3 użytkowników) | |||
Linia 13: | Linia 13: | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' javax.swing.*; | '''import''' javax.swing.*; | ||
Linia 44: | Linia 46: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie wyjaśnienie</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Widoczna będzie tylko etykieta dodana jako ostatnia, gdyż w każdym rejonie (bezparametrowa metoda ''add()'' dodaje komponenty po środku) może znajdować się tylko jeden komponent. Kolejne dodawane komponenty zastępują poprzednie. | Widoczna będzie tylko etykieta dodana jako ostatnia, gdyż w każdym rejonie (bezparametrowa metoda ''add()'' dodaje komponenty po środku) może znajdować się tylko jeden komponent. Kolejne dodawane komponenty zastępują poprzednie. | ||
</div> | </div> | ||
</div> | </div> | ||
== Zadanie 2 == | == Zadanie 2 == | ||
Linia 61: | Linia 65: | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | '''import''' java.awt.*; | ||
'''import''' javax.swing.*; | '''import''' javax.swing.*; | ||
Linia 91: | Linia 97: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> | ||
== Zadanie 3 == | == Zadanie 3 == | ||
Linia 102: | Linia 108: | ||
| Żeby uruchomić przykład [[media:PO_GUI_Zad3.jar|Po_GUI_Zad3.jar]] ściągnij najpierw archiwum 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> | | Żeby uruchomić przykład [[media:PO_GUI_Zad3.jar|Po_GUI_Zad3.jar]] ściągnij najpierw archiwum 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> | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | '''import''' java.awt.*; | ||
'''import''' javax.swing.*; | '''import''' javax.swing.*; | ||
Linia 148: | Linia 155: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> | ||
== Zadanie 4 == | == Zadanie 4 == | ||
Linia 159: | Linia 166: | ||
| Żeby uruchomić przykład [[media:PO_GUI_Zad4.jar|Po_GUI_Zad4.jar]] ściągnij najpierw archiwum 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> | | Żeby uruchomić przykład [[media:PO_GUI_Zad4.jar|Po_GUI_Zad4.jar]] ściągnij najpierw archiwum 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> | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 1</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Jako pierwszy parametr konstruktora trzeba przekazać obiekt ''ContentPane'', a nie kontener. Obiekt ''ContentPane'' dla danego kontenera uzyskuje się przy pomocy metody ''getContentPane()''. | Jako pierwszy parametr konstruktora trzeba przekazać obiekt ''ContentPane'', a nie kontener. Obiekt ''ContentPane'' dla danego kontenera uzyskuje się przy pomocy metody ''getContentPane()''. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 2</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
''BoxLayout'' respektuje sposób wyśrodkowania preferowany przez komponenty. Do zmiany preferowanego wyśrodkowania komponentu służy metoda ''setAlignmentX(Component.CENTER_ALIGNMENT)''. | ''BoxLayout'' respektuje sposób wyśrodkowania preferowany przez komponenty. Do zmiany preferowanego wyśrodkowania komponentu służy metoda ''setAlignmentX(Component.CENTER_ALIGNMENT)''. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | '''import''' java.awt.*; | ||
'''import''' javax.swing.*; | '''import''' javax.swing.*; | ||
Linia 215: | Linia 227: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> | ||
== Zadanie 5 == | == Zadanie 5 == | ||
Linia 227: | Linia 239: | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 1</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Dodaj do przycisków ''MouseListener'', a kod zamieniający kartki umieść w metodzie ''mouseEntered(MouseEvent)'' | Dodaj do przycisków ''MouseListener'', a kod zamieniający kartki umieść w metodzie ''mouseEntered(MouseEvent)'' | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka 2</span> | |||
<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 kontener uzyskany z głównego kontenera przy pomocy metody ''getContentPane()'', a nie sam główny kontener. | Jeżeli używasz ''CardLayout'' w głównym kontenerze, jako parametr ''parent'' metod first()'', ''last()'', ''next()'' i ''previous()'' przekazuj kontener uzyskany z głównego kontenera przy pomocy metody ''getContentPane()'', a nie sam główny kontener. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | '''import''' java.awt.*; | ||
'''import''' java.awt.event.*; | '''import''' java.awt.event.*; | ||
Linia 251: | Linia 269: | ||
'''class''' ZamianaKart '''extends''' MouseAdapter { | '''class''' ZamianaKart '''extends''' MouseAdapter { | ||
'''public''' '''void''' mouseEntered(MouseEvent e) { | '''public''' '''void''' mouseEntered(MouseEvent e) { | ||
//jeżeli używasz CardLayout w głównym kontenerze, | //jeżeli używasz CardLayout w głównym kontenerze, to metodom oczekującym parametru | ||
// | //opisanego w dokumentacji jako "the parent container in which to do the layout" | ||
//przekazuj kontener uzyskany z głównego kontenera przy pomocy metody getContentPane(), | //przekazuj kontener uzyskany z głównego kontenera przy pomocy metody getContentPane(), | ||
//a nie sam główny kontener | //a nie sam główny kontener | ||
Linia 296: | Linia 314: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> | ||
== Zadanie 6 == | == Zadanie 6 == | ||
Linia 308: | Linia 326: | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | '''import''' java.awt.*; | ||
'''import''' java.awt.event.*; | '''import''' java.awt.event.*; | ||
Linia 388: | Linia 408: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> | ||
== Zadanie 7 == | == Zadanie 7 == | ||
Linia 399: | Linia 419: | ||
| Żeby uruchomić przykład [[media:PO_GUI_Zad7.jar|Po_GUI_Zad7.jar]] ściągnij najpierw archiwum 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.Zad7Applet" archive="images/d/db/PO_GUI_Applety.jar" width="500" height="380"></applet> | | Żeby uruchomić przykład [[media:PO_GUI_Zad7.jar|Po_GUI_Zad7.jar]] ściągnij najpierw archiwum 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.Zad7Applet" archive="images/d/db/PO_GUI_Applety.jar" width="500" height="380"></applet> | ||
|} | |} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
Metoda ''setPage(URL)'' nie usuwa wszystkich informacji o poprzednio wyświetlanej stronie, np. definicji stylów. | Metoda ''setPage(URL)'' nie usuwa wszystkich informacji o poprzednio wyświetlanej stronie, np. definicji stylów. | ||
Aby pozbyć się wszystkich pozostałości należy utworzyć nowy dokument przy pomocy wywołania ''getEditorKit().createDefaultDocument()'' i przekazać go do metody ''setDocument()''. | Aby pozbyć się wszystkich pozostałości należy utworzyć nowy dokument przy pomocy wywołania ''getEditorKit().createDefaultDocument()'' i przekazać go do metody ''setDocument()''. | ||
</div> | </div> | ||
</div> | </div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie kod</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
'''import''' java.awt.*; | '''import''' java.awt.*; | ||
'''import''' java.awt.event.*; | '''import''' java.awt.event.*; | ||
Linia 461: | Linia 484: | ||
} | } | ||
</div> | </div> | ||
</div> | </div> |
Aktualna wersja na dzień 21:42, 28 maj 2020
<<< Powrót do przedmiotu Programowanie obiektowe
<<< Powrót do wykładu Graficzny interfejs użytkownika
Zadanie 1
W klasie WitajŚwiecie umieść w oknie głównym drugą etykietę z tekstem. Użyj w tym celu bezparametrowej metody add(). Czemu obie etykiety nie są widoczne?
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad1.jar ściągnij najpierw archiwum 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 (tam gdzie jest przycisk P3), a nie szósta pozycja w siatce była pusta.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad2.jar ściągnij najpierw archiwum 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 archiwum 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 archiwum 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 archiwum 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
Zadanie 6
Rozszerz klasę Dodawanie o możliwość zmiany działania na mnożenie. Niech wybór działania będzie możliwy przy pomocy przycisku combo (JComboBox). Niech wynik będzie obliczany zarówno gdy zostanie zaakceptowana wartość z któregoś z pól, oraz gdy zostanie zmienione działanie. Niech zawartość pól tekstowych będzie wyśrodkowana do prawej.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad6.jar ściągnij najpierw archiwum 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.Zad6Applet" archive="images/d/db/PO_GUI_Applety.jar" width="300" height="120"></applet> |
Rozwiązanie kod
Zadanie 7
Komponenty Swing wyświetlające tekst obsługują formatowanie HTML. Korzystając z tego udogodnienia, stwórz prostą aplikację wyświetlającą stronę HTML znajdującą się pod zadanym adresem URL. Do wyświetlania strony użyj obiektu JEditorPane. Do odczytywania strony użyj obiektu java.net.URL.
Archiwum JAR | Applet |
---|---|
Żeby uruchomić przykład Po_GUI_Zad7.jar ściągnij najpierw archiwum 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.Zad7Applet" archive="images/d/db/PO_GUI_Applety.jar" width="500" height="380"></applet> |
Wskazówka
Rozwiązanie kod