GUI / Kolekcje
jlabel: void setalignment(label.center/left/right) - wyrównanie String gettext() pobiera aktualny tekst napisu void settext(string text) ustawia tekst napisu void setdisplayedmnemonic(char achar) - ustawia skrót klawiszowy void setlabelfor(component c) ustawia do czego odnosi się label
jradiobutton boolean isselected() czy wybrany void setselected(boolean select) wybierz na sztywno add(buttongroup grupa) dodaj do grupy przycisków (aby można było wybrać jeden) settext(), gettext() ustawienie / odczyt tekstu jcombobox boolean isselected() czy został wybrany void setselected(boolean ustaw) zaznacz lub odznacz
jtextarea void append(string str) dopisz tekst do istniejącego int getlinecount() ile linii tekstu jest w polu void setfont(font f) ustaw czcionkę setlinewrap(boolean linewrap) ustawia, czy linie będą łamane, czy nie settext(), gettext() ustawienie / odczyt tekstu
jcheckbox void additem(object anobject) dodaje element do listy Object getitemat(int idx) zwraca obiekt o indeksie idx (użycie to np. String napis = combobox.getitemat(0).tostring() ) int getitemcount() zlicza ilość opcji Object getselecteditem() zwraca element, który jest wybrany void hidepopup() chowa wyskakujące okienko pola wyboru void removeitem(object anobject) usuwa element (także inne wariacje: removeitemat(int idx), removeallitems() )
1.Zaimportować javax.swing.joptionpane; 2.Dodać zdarzenie onmouseclick() do przycisku Wyskocz. 3.Wewnątrz napisać: JOptionPane.showMessageDialog(this,"Co mnie tu wyskoczyło?!");
1. Napisz program, który będzie pytał Cię o imię, a następnie po kliknięciu na przycisk witał Cię z jego użyciem. 2. Napisz program kalkulator: użytkownik ma dwa pola, w którym wprowadza liczby oraz kilka pół jednokrotnego wyboru (radiobutton) określających działanie. 3. Napisz program, w którym przycisk ucieka użytkownikowi spod kliknięcia 4. Zaimplementuj algorytm Luhna do weryfikacji numerów PESEL. Zadbaj o poprawny wygląd aplikacji. Dopisuj poprawne numery PESEL wprowadzane przez użytkownika w polu tekstowym do pliku tekstowego.
Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz ich wzajemną komunikację. Przykład: ręka pokerowa (kolekcja kart), skrzynka odbiorcza (kolekcja maili), książka telefoniczna (słownik nazwisko-numer)
Mniejszy koszt Zwiększa jakość i szybkość działania Łatwiejsze wzajemne oddziaływanie Jak jest potrzebna lista/stos/kolejka, to po co ją programować od zera? Lepiej skoncentrować się na ważnych elementach! Stworzona kolekcja jest zoptymalizowana. Więcej: istnieją różne implementacje tej samej kolekcji (np. dla listy: ArrayList oraz LinkedLista) zoptymalizowane pod konkretne zastosowania. Kolekcje mają zdefiniowane standardowe podejścia. Łatwiej się nauczyć jednego API Łatwiej zaprojektować API Większość z modyfikatorów jest zgodna pomiędzy różnymi rodzajami kolekcji. Przejście z jednego rodzaju na drugi jest bezbolesne. Po co wynajdować koło od nowa skoro można użyć standardowych rozwiązań? Łatwiej o re-use kodu Kolekcje z natury są łatwe do ponownego wykorzystania
Operacje podstawowe wykonywane na obiektach boolean add(object obj) boolean remove(object obj) boolean contains(object obj) Operacje grupowe wykonywane na kolekcjach obiektów boolean addall(collection coll) boolean removeall(collection coll) boolean containsall(collection coll) boolean retainall(collection coll) void clear()
Inspekcja int size() boolean isempty(object obj) Iteracja Iterator iterator() Operacje na tablicach konwersja do tablic Object[] toarray() Object[] toarray(object[] type)
Duplikaty możliwe Dostęp sekwencyjny Przykłady: ArrayList, LinkedList, Vector, Stack Ala ma kota i czipsy 0 1 2 3 4
Ala ma kota i czipsy 0 1 2 3 4 Dostęp pozycyjny do elementów Wyszukiwanie Widok przedziałowy Object get(int indeks) Object set(int indeks) Object add(int indeks) Object remove(int indeks) int indexof(object obiekt) int lastindexof(object obiekt) List sublist(int poczatek, int koniec)
Taka zwykła kolejka (LIFO, FIFO, priorytetowa) Dodawanie elementu Usuwanie elementu Inspekcja boolean offer(object obiekt) Object remove() Object poll() Object element() Object peek()
Reprezentacja zbioru matematycznego Brak uporządkowania elementów Dostęp sekwencyjny niezalecany Brak duplikatów Ala psy ma brzydkie kota trzy oraz
Jednoznaczne odwzorowanie jak w słowniku Klucze, wartości i pary klucz-wartość dostępne jako obiekty Collection Ala Ola Kasia Kunegunda Kot Pies Jeżozwierz
Operacje podstawowe Object put(object klucz, Object wartosc) Object get(object klucz) Object remove(object klucz) boolean containskey(object klucz) boolean containsvalue(object wartosc) Operacje grupowe void putall(map zrodlo) widoki-kolekcje Set keyset() Collection values() Set entryset()
Swoiste wskaźniki Służą do sekwencyjnego przeglądania wszystkich obiektów w kolekcji
Metody statyczne klasy Collections implementują typowe algorytmy wykonywane na kolekcjach: wyszukiwanie binarne sortowanie operacje algebraiczne na zbiorach odwracanie list permutacje list wyszukiwanie elementów max/min
Aby móc sortować, trzeba wiedzieć który obiekt jest wcześniej, a który później. Matematyk by powiedział o relacji częściowego porządku. Intuicyjnie wiemy, że 3 > 2 Ale kto jest większy Ala czy Ola? Java Collections korzysta z dwóch interfejsów służących do porównywania obiektów java.lang.comparable java.util.comparator
compareto(object obj) zwraca: mniej niż 0 gdy jej parametr jest większy niż własny obiekt 0 gdy jej parametr jest równy własnemu obiektowi więcej niż 0 gdy jej parametr jest mniejszy niż własny obiekt
Kolekcje Tablice hashujące Implementacje ogólnego przeznaczenia Tablice dynamiczne Struktury drzewiaste Set HashSet TreeSet Listy List ArrayList LinkedList Queue Deque ArrayDeque LinkedList Map HashMap TreeMap Tablica hashująca + lista LinkedHash Set LinkedHash Map
1. Korzystając z kolekcji, wykonaj analizator częstości występowania znaków w pliku. Zadbaj o graficzną formę (główna forma z okienkiem, w którym wczytuje się zawartość tekstu, druga forma z analizą częstości, przyciski otwórz, zamknij, itp.) 2. Napisz prostą i szybką książkę adresową. Elementami będą obiekty klasy Person. Zaimplementuj interfejs sortujący. 3. Sprawdź eksperymentalnie co jest szybsze: ArrayLista czy LinkedList dla następujących operacji: 1. Wstawianie elementu na początek 2. Wstawianie elementu do środka 3. Wstawianie elementu na koniec 4. Usunięcie z początku 5. Usunięcie ze środka 6. Usunięcie z końca 7. Zwrócenie wartości pierwszego elementu 8. Zwrócenie wartości środkowego elementu 9. Zwrócenie wartości ostatniego elementu