W lekcji „Java – bardzo proste GUI z użyciem Swing” pokazałem jak stworzyć prosty program z interfejsem graficznym (GUI) „ręcznie” kodując całość. Tym razem utworzymy podobny program, ale zadanie ułatwmy sobie używając programu NetBeans IDE, który pozwala znacznie zautomatyzować pracę.
Na początku trzeba odwiedzić stronę http://netbeans.org/downloads/index.html i pobrać interesującą nas aplikację. Wystarczy do naszych potrzeb najprostsza paczka do programowania w Javie, czyli paczka Java SE. Najnowsza wersja NetBeans IDE w momencie pisania tej notki, to 7.1.2, poniższe zrzuty ekranu były zrobione na Mac-u, więc wygląd interfejsu na Twoim komputerze, drogi czytelniku może wyglądać nieco inaczej.
Po pobraniu, zainstalowaniu i uruchomieniu programu, powinien na ekranie pojawić się mniej więcej taki widok:
Nie będę szczegółowo omawiał budowy interfejsu NetBeans IDE, z grubsza przypomina on ten znany z Eclipse, więc po paru eksperymentach, pogrzebaniu w opcjach, ewentualnie przeczytaniu paru tutoriali, połapanie się w nim, przynajmniej w podstawowym zakresie, nie powinno nastręczać zbyt dużych problemów. Przejdźmy więc do rzeczy.
Z menu wybieramy:
File -> New Project
W oknie które się pokaże klikamy kolejno:
– okienku „Categories” opcję Java
– Java Application
i klikamy Next.
W następnym okienku ustawiamy nazwę projektu, miejsce jego zapisu i odznaczamy opcję „Create Main Class”.
Zatwierdzamy, klikając „Finish”.
W okienku po lewej, pojawia się nazwa naszego programu z ikonką przedsatwiającą filiżankę gorącej kawy (Javy!). Klikając w trójką po lewej rozwijamy drzewko z katalogami i plikami.
Teraz czas na budowę interfejsu. Z menu wybieramy:
New -> New File
W oknie które się pojawi wybieramy: Swing GUI Form i JFrame Form.
Klikamy Next i pokazuje się kolejne okno:
Ustawiamy nazwę klasy, pakietu i klikamy „Finish”.
Okno NetBeans wygląda teraz tak:
W środku widać podgląd naszej aplikacji (1). Na razie składa się ona wyłącznie z komponentu JFrame który widoczny jest jako szary prostokąt. Po prawej w okienku 2, znajduje się paleta dostępnych kontrolek, poniżej (3) znajduje się zakładka w której możemy podejrzeć i zmieniać poszczególne ustawienia aktywnego komponentu. Na razie jednak nie zmieniamy nic. Można zobaczyć jak obecnie prezentuje się nasza aplikacja klikając ikonkę z zieloną strzałką (4).
Na razie raczej nie robi ona zbyt oszałamiającego wrażenia. Czas aby ją trochę wzbogacić w kolejne kontrolki..
Z palety komponentów wybieramy „Panel” (1) i przeciągamy do szarego prostokąta. Pojawia się pomarańczowy kwadrat, reprezentujący komponent JPanel (1).
Rozciągamy go tak, aby pokrywał całą ramkę:
Następnie dodajemy kontrolkę służącą wpisywaniu tekstu w jednej linii, czyli z palety wybieramy „Text Field” i przeciągamy go na miejsce w którym chcemy go umieścić.
Teraz można zmienić wielkość pola a także tekst który jest wyświetlany w nim domyślnie. W tym celu z zakładki właściwości wybieramy opcję „text” i w polu po prawej wpisujemy żądany tekst. Jeśli chcemy by kontrolka domyślnie była pusta, po prostu usuwamy tekst. Po zatwierdzeniu Enterem, wpisany tekst pojawi się w podglądzie.
Można też zmienić nazwę komponentu wybierając z zakładki właściwości opcję „Code” i tam modyfikując zawartość pola „Variable Name”. Tu dla pola tekstowego wybrałem nazwę „poleTekstowe”.
Teraz, podobnie jak to zrobiliśmy z kontrolką „Text Field”, umieszczamy komponenty „Label” (nazwałem go „komunikatLabel” i usunąłem tekst domyślny).
W końcu przyszedł czas na dwa przyciski którym nadałem nazwy „witajButton” i „zegnajButton” a także zmieniłem wyświetlany na nich tekst.
Interfejs jest w zasadzie gotowy, teraz trzeba tylko dorzucić nieco kodu, aby nasz program coś robił.
Klikamy dwukrotnie w przycisk „Witaj”, ale nie w tekst, bo wtedy wejdziemy w tryb zmiany tekstu na przycisku. Zostaniemy przeniesieni do kodu, do metody która jest odpowiedzialna za akcję wyzwalaną przez przycisk.
Dopisujemy tam linijkę kodu:
1 |
komunikatLabel.setText("Witaj "+poleTekstowe.getText()); |
Przeanalizujmy teraz ten fragment kodu. Odwołujemy się do kontrolki „komunikatLabel” (to jest nazwa którą nadaliśmy kontrolce typu Label). Wywołujemy jej metodę setText(), która, jak łatwo się domyśleć, odpowiada za ustawienie tekstu która się wyświetla w tej kontrolce. W nawiasie łączymy łańcuch „Witaj ” z tekstem który jest pobierany z pola tekstowego „poleTekstowe” dzięki metodzie getText().
Podsumowując, tekst pobrany z pola tekstowego jest łączony z tekstem „Witaj ” i skierowany do kontrolki komunikatLabel, w której się wyświetla.
Następnie wracamy do trybu projektu klikając u góry na „Design”, wybieramy przycisk „Żegnaj” i analogicznie do tego jak zrobiliśmy z przyciskiem „Witaj” dopisujemy kod:
1 |
komunikatLabel.setText("Żegnaj "+poleTekstowe.getText()); |
Teraz przyszedł wiekopomny moment w którym uruchomimy nasz program, używamy więc znanej nam zielonej strzałki, lub wybieramy z menu:
Run -> Run Main Project
lub używamy przycisku F6 (przynajmniej tak jest na Mac-u)
Naszym oczom ukazuje się długo wyczekiwany obraz:
Teraz wpisujemy nasze imię i naciskamy przycisk „Witaj”.
Podobnie testujemy przycisk „Żegnaj”.
Działa?
Mam taki kod, który niby sam napisałem, ale jest tak naprawdę tym samym co „komunikatLabel.setText(“Żegnaj “+poleTekstowe.getText());”
tylko z innymi nazwami:
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.setBackground(Color.gray);
jTextField2.setText(jTextField3.getText())+” Cośtam”);
}
i nie działa D:
Z boku jest napisane, że „tutaj” void jest niedozwolony, że spodziewa się „;” oraz, że nie jest twierdzeniem, komunikatem(?) (not a statement)
Ah, nieważne. Wystarczyło wstawić jeden nawias.
mam taki problem… Od czego to zależy ?
http://zapodaj.net/984c690c55727.png.html
Na moje oko to znaki którymi został objęty tekst nie są prawidłowe. To jest lewy podwójny cudzysłów (http://www.fileformat.info/info/unicode/char/201C/index.htm) a powinien być zwykły cudzysłów: ” „.
Właśnie zauważyłem, że w kodzie powyżej są też te złe znaki. Zapewne WordPress zrobił mi psikusa. Zaraz poprawię.
Już poprawiłem, teraz powinno być dobrze. Z niewiadomych powodów WP wyświetlając kod zmieniał znaki.
Dziękuję teraz wszystko jest w porządku :)
Szczerze myślałem że nie dostanę odpowiedzi w takim krótkim czasie, ale jednak się pomyliłem. Chętnie bym osobiście korespondował z panem żeby ogarnąć wiedzę potrzebną do płynnego pisania programów w javie. Uczę się na technika informatyka i ta umiejętność szczerze by mi się przydała. Pozdrawiam :) Dziękuję jeszcze raz za pomoc.
jak zrobić lsowoy tekst che aby wyloswało mi jedną rzecz z posród 50 tylko nie cyfry ae tekst
O ile rozumiem, chodzi o to, żeby spośród 50 tekstów wylosować jeden? Można zrobić to tak:
1. Stworzyć tablicę String[] o 50 polach.
2. W każdym polu umieścić tekst.
3. Wylosować nr. indeksu (zakres 0 – 49)
4. Pobrać tekst pola o wylosowanym indeksie.
tak o to mi chodzi a podpowiesz jak to zrobić
Tworzenie tablic jest opisane tutaj:
http://ggoralski.pl/?p=1631
Losowanie liczb tu:
http://ggoralski.pl/?p=1702
a i potrzebowła bym więcej twoich porad mozna jakiś kontakt do ciebie
Najlepiej wrzuć pytanie na stronę, pod powiązanym tematycznie wpisem. Jeśli nie będę znał odpowiedzi, lub nie będę miał czasu jej udzielić, jest szansa, że ktoś inny pomoże.
Mi wszystko działa.
Dzięki za pomoc.
Robię wszystko wg instrukcji, krok po kroku, jednak po uruchomieniu programu nie wyskakuje żadne okienko, mimo że NetBeans nie pokazuje żadnego błędu.