Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Podobne dokumenty
Tworzenie elementów graficznych

Kontenery i komponenty graficzne

Podstawy Swing. Tomasz Borzyszkowski

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki

Programowanie graficznych interfejsów użytkownika

Podstawy Języka Java

Programowanie obiektowe

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006

Graphic User Interfaces pakiet Swing

Język Java część 2 (przykładowa aplikacja)

Programowanie zdarzeniowe

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Programowanie w Javie Wykład 6 Okienka w Javie (AWT)

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016

Dokumentacja do API Javy.

Java - interfejs graficzny

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika

SWING. dr Jarosław Skaruz

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Pierwsza ramka. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 10

Programowanie obiektowe

Aplikacja wielowątkowa prosty komunikator

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Aplikacja wielow tkowa prosty komunikator

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach

LABORATORIUM 7 Cel: 1_1

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie Obiektowe GUI

Język Java część 2 (przykładowa aplikacja)

Aplikacje w środowisku Java

Java: interfejsy i klasy wewnętrzne

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science

DOSTĘP DO METOD I ZMIENNYCH. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla każdego, Helion 2001)

Iteracyjno-rozwojowy cykl oprogramowania 4

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Wykład 4_1. Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy.

Język JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Multimedia JAVA. Historia

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Aplikacje w środowisku Java

setdefaultcloseoperation(jframe.exit_on_close);//obsługa zamykania aplikacji setvisible(true); } //wyświetlenie okna

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

1 Atrybuty i metody klasowe

Programowanie obiektowe

Java Foundation Clases. Tworzenie graficznych interfejsów użytkownika (GUI) w Javie

Informatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing.

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

II Tworzenie klasy Prostokąt dziedziczącej z klasy wątku

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Przykładowe roz wiązanie:

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe.

SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe.

GUI - projektowanie interfejsów cz. II

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres lub

Interfejsy i klasy wewnętrzne

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Java SE Laboratorium nr 5. Temat: Obsługa zdarzeń

Projektowanie aplikacji internetowych laboratorium

Programowanie zdarzeniowe

Programowanie obiektowe zastosowanie języka Java SE

Rozdział 4 KLASY, OBIEKTY, METODY

Podstawy Języka Java

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Programowanie w Internecie. Java

Java biblioteka Swing

DOSTĘP DO METOD I ZMIENNYCH, TABLICE. Dostęp do zmiennych (na podstawie:l.lemay,r.cadenhead,java 2 dla kaŝdego, Helion 2001)

Klasy abstrakcyjne, interfejsy i polimorfizm

Programowanie Multimediów. Programowanie Multimediów JAVA. programowanie GUI. (AWT i Swing) [1]

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

JavaFX. Zaawansowane technologie Javy 2019

Wykład 4_2 część druga. Iteracyjno-rozwojowy cykl oprogramowania 4

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy programowania obiektowego

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Aplikacje RMI

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL /08-00

Programowanie obiektowe

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika

Podstawy tworzenia aplikacji z wykorzystaniem języka Java ME ćwiczenia 1

Scenariusz Lekcji. Część organizacyjna:

Zaawansowane programowanie obiektowe. Wykład 3 część 2

Języki i metody programowania Java Obsługa zdarzeń - przykłady

Programowanie obiektowe

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Połączenia między bazami danych i programem w języku Java część 2

Java podstawy jęyka. Wykład 2. Klasy abstrakcyjne, Interfejsy, Klasy wewnętrzne, Anonimowe klasy wewnętrzne.

Java Podstawy. Michał Bereta

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

Podstawowe informacje o apletach

Transkrypt:

Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak

PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

NIETYPOWE KLASY wewnętrzne, lokalne i anonimowe Język Java dostarcza specjalne mechanizmy pozwalające definiować następujące typy klas: klasy wewnętrzne - definicja klasy wewnętrznej znajduje się wewnątrz definicji innej klasy, lokalne klasy wewnętrzne - definicja lokalnej klasy wewnętrznej znajduje się wewnątrz metody innej klasy, anonimowe klasy wewnętrzne - anonimowa klasa wewnętrzna definiowana jest podczas tworzenia obiektu tej klasy; tworzony jest tylko jeden jej obiekt; klasa anonimowa nie ma nazwy.

ANONIMOWE KLASY WEWNĘTRZNE nie ważne jak się nazywam, ważne co robię Składnia anonimowych klas wewnętrznych: new TypNadrzedny ( /* arumenty konstruktora typu nadrzędnego */ ) { " /* metody i pola składowe klasy anonimowej */ }; Wykorzystanie klas lokalnych i lokalnych anonimowych: public static void main(string[] args) { " /* klasa lokalna */" " class Osoba { " " String imie; String nazwisko; " " Osoba (String n, String i) { nazwisko = n; imie = i; } " " public String tostring() { return imie + " " + nazwisko; } " }; " /* utworzenie obiektu lokalnej klasy anonimowej dziedziczącej po lokalnej klasie Osoba */ " Osoba pracownik = new Osoba ( "Jas", "Fasolka" ) { /* wywołanie konstruktora klasy Osoba */ " /* definicja pól i metod rozszerzających funkcjonalność klasy Osoba */ " " String stanowisko = "Sprzedawca warzyw"; " " public String tostring() { return stanowisko + ": " + super.tostring(); } " }; " System.out.print(pracownik); // Sprzedawca warzyw: Fasolka Jas }

JAVA AWT czyli czego nie będziemy używać Abstract Window Toolkit - biblioteka do prostego programowania GUI (graficznego interfejsu użytkownika) bazująca na odpowiednikach. Aplikacje zachowują wygląd i wrażenie systemu operacyjnego, na którym są uruchomione (ta sama aplikacja uruchomiona na Windows z założenia powinna wyglądać jak natywna aplikacja Windowsowa, a uruchomiona np. na Mac OSX jak natywna aplikacja na Mac OSX) Poszczególne kontrolki są tworzone jako odpowiedniki przez wbudowane mechanizmy systemu operacyjnego. Biblioteka powodowała błędy na różnych platformach, przez co slogan firmy SUN dotyczący Javy zmienił się z Napisz raz, uruchamiaj wszędzie na Napisz raz, debuguj wszędzie.

SWING...aby okienka otwierały się łatwiej... Swing to zestaw narzędzi (biblioteka) GUI, który jest częścią Java Foundation Classes (JFC). Elementy interfejsu użytkownika są rysowane na powierzchni pustych okien. Jedyne wsparcie wymagane od systemu operacyjnego to utworzenie pustego okna i możliwość rysowania w nim. Swing posiada bogatszy i łatwiejszy w użyciu zestaw elementów interfejsu użytkownika. W bardzo małym stopniu zależy od platformy - mniej błędów związanych z niezgodnością z platformy. Aby wykorzystywać pakiet Swing należy zaimportować javax.swing.*

NASZE PIERWSZE OKIENKO teoria Aby utworzyć puste okno należy: zdefiniować klasę dziedziczącą po JFrame, utworzyć obiekt tej klasy, ustawić wielkość okna (domyślnie 0x0 pikseli), określić zachowanie okna w momencie zamknięcia, wyświetlić okno.

NASZE PIERWSZE OKIENKO praktyka class MojeOkienko extends JFrame{ " public MojeOkienko(){ " " /* ustawienie wysokości i szerokości */ " " setsize(szerokosc,wysokosc); " " /* ustawienie zachowania w momencie zamknięcia okienka */ " " this.setdefaultcloseoperation(exit_on_close); " } " public static final int SZEROKOSC = 300; /* pikseli */ " public static final int WYSOKOSC = 200; /* pikseli */ } public static void main(string[] args) { " MojeOkienko mo = new MojeOkienko(); " mo.show(); /* wyświetlenie okienka */ } Domyślnie okno znika w momencie gdy użytkownik je zamknie, ale program nie kończy swojego działania.

METODY KLASY JFrame czyli co możemy zrobić z okienkiem dispose() - zamyka okno i zwalnia zasoby systemu używane przy jego utworzeniu settitle(string) - ustawia tekst w pasku tytułowym okna setresizable(boolean) - określa czy użytkownik może zmieniać rozmiar ramki setlocation(int x, int y) - ustawia pozycję okna setbounds(int x, int y, int szerokosc, int wysokosc) - ustawia jednocześnie pozycję i wielkość okna

TOOLKIT przydatne narzędzia Toolkit to klasa pozwalająca na pobranie informacji zależnych od systemu, np. rozmiaru ekranu. import java.awt.*; Toolkit toolkit = Toolkit.getDefaultToolkit(); Dimension d = toolkit.getscreensize(); int szerokosc = d.width; int wysokosc = d.height; Zarówno klasa Toolkit jak i Dimension należą do AWT. Opis innych przydatnych metod udostępnianych przez klasę Toolkit można znaleźć w dokumentacji na stronie http://java.sun.com/j2se/1.4.2/docs/api/java/awt/toolkit.html

DODAWANIE KOMPONENTÓW czyli co zrobić, żeby okienko nie było puste Aby dodać do okna element interfejsu użytkownika należy dodać komponent do powierzchni zawartości tego okna: /* pobranie powierzchni zawartości */ Container powzawartosci = getcontentpane(); /* utworzenie komponentu */ Component k = /*... */; /* dodanie komponentu k do powierzchni zawartości */ powzawartosci.add(k);

PRZYWITAJMY SIĘ SWING ujące Hello World Aby wyświetlić napis należy dodać do powierzchni zawartości komponent JPanel i namalować na tym panelu napis. W tym celu należy: zdefiniować klasę rozszerzającą JPanel, przeładować metodę paintcomponent, utworzyć obiekt komponentu i dodać go do powierzchni. class PowitalnyPanel extends JPanel{ " int x; int y; " public PowitalnyPanel(int px, int py) { x = px; y = py; } " public void paintcomponent(graphics g){ " " g.drawstring("witaj w SWING'ującym świecie", x, y); /* narysowanie napisu */ " } } /* w jednej z metod klasy dziedziczącej po JFrame... */ Container powzawartosci = getcontentpane(); Component k = new PowitalnyPanel(10,20); powzawartosci.add(k);

DODAWANIE ELEMENTÓW INTERFEJSU UŻYTKOWNIKA Aby dodać elementy interfejsu użytkownika takie jak przyciski, pola tekstowe, należy: utworzyć obiekt komponentu (JTextField, JComboBox, JRadioButton), dodać komponent do panelu, w przypadku komponentów, które będą później wykorzystywane należy dodać do klasy okienka referencję do tego komponentu, która umożliwi modyfikację stanu komponentu.

PODSTAWOWE KOMPONENTY przycisk, etykieta i pole tekstowe class MojeOkienko extends JFrame {! JTextField poletekst; /* referencja do tekstu */! JPanel panel; /* referencja do panelu */! JLabel etykieta; /* referencja do etykiety */!! public void dodajkomponenty()! {!! Container powzawartosci = getcontentpane();!! panel = new JPanel(); /* utworzenie panelu */!! powzawartosci.add(panel); /* dodanie panelu do powierzchni zawartości */!!!! etykieta = new JLabel("Witamy w naszej aplikacji"); /* utworzenie etykiety */!! panel.add(etykieta); /* dodanie etykiety do panelu */!!!! JButton przycisk = new JButton("Przycisk"); /* utworzenie przycisku */!!!! panel.add(przycisk); /* dodanie przycisku do panelu */!! poletekst = new JTextField("Ala ma kotka", 20); /* utworzenie pola tekstowego */!! panel.add(poletekst); /* dodanie pola tekstowego do panelu */! }! public MojeOkienko(){!! dodajkomponenty();!! setsize(300,200);!! this.setdefaultcloseoperation(exit_on_close);!!! } }

OBSŁUGA ZDARZEŃ teoria W celu obsługi zdarzeń należy utworzyć klasę słuchacza implementującą interfejs ActionListener (pakiet java.awt.event) oraz zdefiniować w tej klasie metodę actionperformed. Dodać obiekt klasy słuchacza do komponentu za pomocą metody addactionlistener. Klasa słuchacza najczęściej jest implementowana jako klasa wewnętrzna, lokalna lub anonimowa.

OBSŁUGA ZDARZEŃ praktyka Wykorzystanie klasy lokalnej: class Słuchacz implements ActionListener { " public void actionperformed( ActionEvent e ) { " " etykieta.settext( poletekst.gettext() ); " } }" " przycisk.addactionlistener( new Słuchacz() ); Wykorzystanie klasy anonimowej: przycisk.addactionlistener( new ActionListener() { " public void actionperformed( ActionEvent e ) { " " etykieta.settext( poletekst.gettext() ); " } } );