Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Graficzny Interfejs Użytkownika mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019
Spis treści Graficzny Interfejs Użytkownika... 3 2
Graficzny Interfejs Użytkownika Celem tego laboratorium będzie przygotowanie aplikacji posiadającej graficzny interfejs użytkownika. Ze względu na łatwość generowania GUI, wykorzystamy do tego inne IDE Eclipse. Utwórzmy nowe projekt w Eclipse. File New Java Project. W oknie Project name należy wprowadzić nazwę projektu i wybrać opcję Finish. Utworzony zostanie nowy projekt. Kolejnym krokiem jest dodanie formatki. Można dokonać tego w menu głównymeclipse: File New Other Swing Designer / JFrame 3
W wyświetlonym oknie należy wpisać nazwę formatki oraz pakietu. Dla uporządkowania projektu można utworzyć pakiet, w którym znajdą się wszystkie okienka. Po dodaniu okna, wyświetlony zostanie jego kod źródłowy. Obok kodu źródłowego, każde okienko posiada możliwość wizualnej edycji. W tym celu należy przełączyć się na widok okna, poprzez zakładkę Design: Wyświetlona zostanie pusta formatka: Przed przystąpieniem do rozłożenia elementów na formatce, konieczne jest ustawienie odpowiedniego Layoutu. Po kliknięciu na formatkę, w oknie Properties rozwińmy sekcję Layout i wybierzmy opcję Absolute. Dzięki temu, będziemy mieli możliwość bezpośredniego rozmieszczenia elementów w wybranych miejscach na formatce. 4
Przygotujmy formatkę, na której wprowadzimy 2 liczby oraz wykonamy działanie arytmetyczne, po kliknięciu na przycisk: Po kliknięciu na przycisk (w ekranie tworzenia formatki) zostaniemy przeniesieni do miejsca w kodzie, w którym należy wpisać polecenia, wykonywanie po kliknięciu na przycisk. Napiszmy kod, który po kliknięciu na przycisk Dodaj, zsumuje wartości z textboxów i wyświetli sumę w Label. lblwynik.settext("wynik: " + Integer.toString((Integer.parseInt(txtFieldLiczba2.getText()) + Integer.parseInt(txtFieldLiczba1.getText())))); Powyższy kod jest poprawny (działający) jednak nie do końca zgodny z zasadami programowania. Kod biznesowy (w naszym wypadku obliczanie sumy liczb) powinien być oddzielony od formatki. W tym celu należy utworzyć klasę, zawierającą odpowiednie metody. Utwórzmy klasę ArithmeticHelper, w której zawrzemy metodę odpowiedzialną za dodawanie: public String dodaj(string liczba1, String liczba2){ int suma = Integer.parseInt(liczba1) + Integer.parseInt(liczba2); String result = "Wynik " + Integer.toString(suma); return result; } Ponieważ wynik działania ma być podstawiony do label, funkcja może zwracać typ String (pozwoli to uniknąć dodatkowych konwersji na formatce). W konstruktorze formatki należy utworzyć obiekt klasy ArithmeticHelper: 5
ArithmeticHelper AH = new ArithmeticHelper(); Następnie, po kliknięciu na przycisk, można dokonać podstawienia wartości do label: lblwynik.settext(ah.dodaj(txtfieldliczba1.gettext(), txtfieldliczba2.gettext())); Rozbuduj klasę ArithmeticHelper odejmowanie, mnożenie i dzielenie. Zmodyfikuj GUI tak, by każde działanie było wykonywane po kliknięciu na odpowiedni przycisk Środowisko Eclipse pozwala na prace z wieloma oknami. Dodajmy do projektu nowe okno. Napiszmy kod, który po kliknięciu na przycisk, spowoduje jego wyświetlenie. Second s1 = new Second(); s1.setvisible(true); Po kliknięciu na przycisk, wyświetlone zostanie nowe okno. Utworzenie okna w projekcie, spowodowało automatyczne wygenerowanie konstruktora: public Second() { setdefaultcloseoperation(jframe.exit_on_close); setbounds(100, 100, 450, 300); contentpane = new JPanel(); contentpane.setborder(new EmptyBorder(5, 5, 5, 5)); contentpane.setlayout(new BorderLayout(0, 0)); setcontentpane(contentpane); } W przypadku okien innych niż główne okno programu, konieczna jest modyfikacja pierwszej linii: setdefaultcloseoperation(jframe.dispose_on_close); Parametr ten odpowiada za zachowanie okna po kliknięciu na przycisk zamykania (X). Wartość domyślna sprawia, że zamknięte zostaną wszystkie okna. Modyfikacja sprawi, iż zamknięte zostanie tylko dane okno. 6
Napisz aplikację z GUI: Główne okno powinno wyświetlać informacje o przedmiocie oraz zawierać 4 przyciski przenoszące do kolejnych okien. Okno o autorze należy zawrzeć w nim informacje o autorze programu oraz uczelni. Okno podatki należy zawrzeć w nim funkcje, pozwalającą na przeliczanie kwoty brutto na netto (oraz obliczanie podatku vat) w przypadku cen towarów i usług. Funkcje powinny być wywoływane po kliknięciu na przycisk. Okno kalkulator trasy należy zawrzeć w nim pozwalające na obliczanie kosztów przejazdu z miejsca A do miejsca B (użytkownik powinien móc wprowadzić średnie spalanie pojazdu, koszt 1 litra paliwa, odległość pomiędzy miejscami) Dodatkowe okno, posiadające zaimplementowaną własną funkcjonalność. 7