Idziemy dalej z biblioteką Swing i językiem Java! Podczas omawiania poprzednich tematów padło już wielokrotnie hasło "BorderLayout". I jak zdążyłem wspomnieć, jest to jeden z "układów" dla rozmieszczania mniejszych komponentów na "ramce" o nazwie "JFrame". Ale co to jest "układ"? Co to jest "BorderLayout"? I jakie mogą być jeszcze inne układy jeśli twierdzę, że ten przytoczony to tylko jeden z nich? Niech zawartość artykułu rozwieje te wątpliwości raz na zawsze!

Ponownie zmierzamy w stronę dylematu "podpinania" zdarzeń do przycisków w Javie przy pomocy biblioteki Swing. Mamy klasy wewnętrzne, a teraz wyrażenie lambda przybliży nas do celu. Gdy zobaczycie jak je zastosować do przycisku, nie będę musiał się nawet pytać która z metod wydaje się Wam przyjemniejsza. Bez ceregieli. Obsługa zdarzeń za pomocą wyrażenia lambda!

Przystępujemy do następnego artykułu po zapowiedzianej dłuższej przerwie. Przyznajcie szczerze, niezbyt piękny był ten zapis z klasami, prawda? Tak trzeba było pisać zanim pojawiła się Java 8. OK, teraz przystąpimy do bardziej nowoczesnego sformułowania. Ono istnieje już od sześciu lat więc o nim też mogliście już nieraz usłyszeć. Przedstawiam Państwu "wyrażenie lambda" (ang. "lambda expression")!

I to już będzie ostatnia część na dzisiejszy dzień, zatem powracamy do tego samego pytania: "jak zaprogramować zdarzenie do przycisku tak, aby po jego naciśnięciu coś się wydarzyło?". Dłuży się to niemiłosiernie, natomiast trzeba aż tak wielu wyjaśnień, aby korzystać z tego świadomie i rozsądnie. Znamy już klasy wewnętrzne, ich budowę, dowiemy się teraz jak mogą nam pomóc w rozwiązaniu problemu. Samo tworzenie zdarzeń w Javie określane jest jako "obsługa zdarzeń" tak jak to mieliśmy z wyjątkami, co nie? Przechodzimy do tematu.

Nie możemy dalej iść z biblioteką Swing dopóki nie zapoznamy się ze sposobami "podpinania" zdarzeń. Istnieją dwie metody: starsza istniejąca od Javy 5.0 (2004) i nowsza od Javy 8 (2014). Pokażę Wam obie i podzielę to na dwie części. Najpierw struktura sama w sobie, a potem jak ją wykorzystać i "podstawić" do przycisku, aby coś się wydarzyło po jego naciśnięciu. Oto pierwsza metoda: klasa wewnętrzna. Szczegóły w środku!

Kontynuujemy pisanie o bibliotece Swing języka Java. Aby w ogóle robić coś porządnego, trzeba najpierw zapoznać się ze wszystkimi podstawowymi komponentami jakie oferuje Swing. Jeśli zainteresowałem Was tym tematem mającym za sobą ponad 20 lat (i co z tego?), przechodzimy od razu do konkretów. To będzie na razie sama lista z wyjaśnieniami co do czego służy i jak prezentuje się w oknie.

4 maja, zaczynamy kolejną serię! Będę miał przyjemność pisać Wam na temat biblioteki Swing należącej do Javy, która pozwala na tworzenie graficznych interfejsów użytkownika. Nie będzie o JavaFX! Wiem o jej istnieniu, ale mam swoje powody aby o niej teraz nie pisać. Jak utworzyć pierwsze okno i dlaczego w Swing zapraszam do artykułu.

Ostatnia wypowiedź na dzisiaj (dotycząca Javy oczywiście) sięgać będzie tematu formatowania danych w postaci łańcuchów znaków, czyli typu "String". Nie chodzi tylko o konwertowanie liczb na łańcuchy, ale także ich ładne prezentowanie. Na przykład wypisanie dużej liczby z odstępami, czy też wyświetlenie wyników danej kolumny z tabelki o tej samej szerokości pola, aby kolejne dane się "nie rozjeżdżały". Prezentowana tutaj metoda która nam to umożliwi to "String.format". Zapraszam już po raz ostatni w dniu Konstytucji 3 Maja!

Dosłownie na chwilę odejdziemy od Javy, bo pragnę zabrać głos w sprawie rozwoju własnej działalności. Mamy początek maja i chyba wreszcie coś zaczyna się poprawiać w zakresie widoczności strony na Google. Kursy online otrzymują od dłuższego czasu większe zainteresowanie na YouTube! Zostało mi już bardzo niewiele, aby dojść do końca i zrównać się z pewną konkurencją. Zobaczymy wówczas czy będę miał argument by się wściec...

Czy przyszła Wam do głowy jedna okoliczność związana ze słowem kluczowym "throws" omawianym tutaj? Obsługa wyjątków kryje jeszcze jedną tajemnicę. Jak wspomniałem, "throws" "przerzuca" odpowiedzialność obsłużenia zgłoszonego wyjątku metodzie wywołującej. A co w przypadku gdy "main" posiada taką definicję? Jakie konsekwencje mogą z tego wyniknąć? Czytajcie dalej, a okaże się to ciekawsze od powieści kryminalnej.

Zabieram się za kolejną porcję obfitego redagowania na własnej stronie. Znowu Java bez zmian i opowiem czym jest import statyczny oraz czym się on różni od zwykłego. To również stanowi jedynie element poboczny i może pomóc lub zaszkodzić w zależności od tego, kto czyta nasz kod. Nie migajcie się, poznajcie kolejny element o którym się mało mówi.

Jest jeszcze wczesna godzina, zatem macie moją wypowiedź już po raz czwarty z rzędu TEGO SAMEGO DNIA! Nie wiem jak ja to znoszę i póki co, nie chcę się nad tym zastanawiać. Przechodzimy do kolejnego prostego tematu związanego z Javą, który macie traktować jako całkowicie opcjonalny. Dotyczy on statyczności, jest rzadko stosowany, a to coś kryje się pod nazwą "inicjalizator statyczny". Poznajcie szerzej ten termin razem z przykładem pozostawionym w środku.

Gotowi na dalsze wyjaśnienia związane z tym samym artykułem? Został jeszcze jeden element. Pamiętacie dopisek "throws" w nagłówku funkcji? Jest to nieco rzadziej omawiany element a szkoda, bo równie przydatny co samo przechwytywanie wyjątków. Obsługa wyjątków w języku Java to jedno, a "przerzucenie" tej odpowiedzialności na metodę wywołującą to zupełnie inna bajeczka.

Godzina dwunasta, zatem piszę po raz drugi. Wracając do tamtego artykułu trzeba opisać kolejny obcy termin na który wtedy zwróciłem Waszą uwagę. Serializacja obiektów w Javie wiąże się z dużą odpowiedzialnością. To nie jest temat, który powinien być w rękach kompletnej amatorszczyzny. Po czym rozpoznać doświadczonego od początkującego w tym temacie? Jeden wstawi ważną stałą "serialVersionUID" do klasy, a drugi nie. Wyjaśnienia i szczegóły w środku.

Na pierwszy strzał idzie wyjaśnienie jednej z kilku nieścisłości, które pojawiły się w tym artykule. Pakiety w języku Java są szeroko wykorzystywane tylko nie każdy wie z jakich powodów. Może Wy jesteście zainteresowani dlaczego stosujemy pakiety i jakie są zasady ich stosowania?

UWAGA!!!

Ze względu na stwarzanie problemów przez Joomlę z powodu korzystania z samego słowa "Java" pisanego z małej litery, będę przez całość artykułu posługiwał się tą nazwą pisaną wielką literą. Przepraszam za utrudnienia jednak to prawdopodobnie wynika z kolizji nazw i Joomla musi jakoś korzystać z tego słowa podczas przetwarzania treści artykułu.

Trzeci raz z rzędu piszę do Was z tego samego fotela. Odejdźmy teraz od złożonych rzeczy i skupmy się na czymś prostszym. Jest jeszcze tyle tematów w języku Java, a nie zostały one omówione. Taka pętla "foreach" na przykład. Nazywana jest również pętlą rozszerzoną. Debiut miał miejsce właśnie w Javie i pozwala na wygodniejszy sposób obsługi wszelkich tablic i list, czyli zmiennych przechowujących wiele danych. To będzie ostatni wpis na dzisiaj.

Zaprezentuję teraz drugi wariant zapisu i odczytu danych. Język Java oferuje dodatkowo obiekty zdolne do przetwarzania danych zapisanych w pliku tekstowym. Tutaj procedura jest zdecydowanie bardziej rozbudowana i uprzedzam, że może sprawiać duże trudności w rozumieniu, gdyż kod przeze mnie prezentowany będzie od razu zaopatrzony w funkcje których mogliście nie widzieć jeszcze na własne oczy. Skoro już Państwa uprzedziłem, przechodzimy do rozpoczęcia tematu. Zapis i odczyt z pliku tekstowego.

Nie opuszczamy Javy ani na moment, zmienimy jedynie temat. Na początek mam jedno pytanko. Czy ktoś z Was wie do czego służy serializacja obiektów? Wiecie w ogóle że jest taki termin? Jeśli drapiecie się po głowie, to czytajcie uważnie. Nie mówię, że jest to podstawa w rozumieniu języka, natomiast przechowywanie danych w celu zapisu i odczytu może być ciekawym eksperymentem. To co, przekonałem do zmiany decyzji?

Czy wiecie, że w języku Java można również zrobić przeciążanie konstruktorów? Stosując identyczną sztuczkę z metodami, jesteśmy w stanie to "nanieść" również na konstruktory. Aczkolwiek trzeba wiedzieć jak to robić dobrze, gdyż konstruktory wyróżniają się nie tylko zastosowaniem, ale także innym doborem słów kluczowych. Zapraszam każdego zainteresowanego do dalszego ciągu.

Niniejszy artykuł będzie robił za podsumowanie tego "sznurka" poprzednich wpisów na temat samego dziedziczenia w języku Java. Być może przypomni mi się coś jeszcze istotnego a na razie, wypuszczam ostatnią planowaną część na temat dziedziczenia w której polimorfizm wkracza do akcji. Polimorfizm i dziedziczenie to dwa fundamenty programowania obiektowego stojące obok hermetyzacji. Ona sama dotyczy jedynie określenia dostępu do danych, natomiast jeśli zajdzie taka potrzeba, o niej też wspomnę w osobnym artykule. Zakończmy to, co zaczęliśmy już dawno temu!