Aplikacje w Javie wykład 12 Programowanie GUI

Wielkość: px
Rozpocząć pokaz od strony:

Download "Aplikacje w Javie wykład 12 Programowanie GUI"

Transkrypt

1 Aplikacje w Javie wykład 12 1 Programowanie GUI Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, C. S. Horstmann, G. Cornell, Java. Podstawy, Helion, Gliwice 2013 C. S. Horstmann, Java. Techniki zaawansowane, Helion, Gliwice 2017

2 GUI komponenty wizualne i kontenery 2 Standardowe pakiety java.awt (AWT) oraz javax.swing (Swing) zawierają klasy definiujące wiele różnorodnych komponentów wizualnej interakcji programu z użytkownikiem (okna, przyciski, listy, menu, tablice itp.). Komponenty wywodzą się z abstrakcyjnej klasy Component. Tworzymy je za pomocą wyrażenia new wywołującego odpowiedni konstruktor klasy komponentu, któremu podajemy argumenty, określające niektóre właściwości komponentu (np. tekst/ikonę na przycisku). Komponenty mają właściwości (np. kolory, czcionka tekstu na przycisku), które możemy ustalać (lub pobierać) za pomocą metod z odpowiednich klas komponentów (metody setnnn(...), getnnn(...), isnnn(...), gdzie NNN nazwa właściwości). Większość właściwości komponentów jest reprezentowana przez obiekty odpowiednich klas (np. czcionka klasa Font, kolor klasa Color) Komponenty, które mogą zawierać inne komponenty nazywają się kontenerami. Do kontenerów dodajemy inne komponenty (w tym inne kontenery) Z każdym kontenerem związany jest określony zarządca rozkładu, który określa układ komponentów w kontenerze i ich zachowanie (zmiany rozmiarów i położenia) przy zmianie rozmiarów kontenera (rozkład jest jedną z właściwości kontenera). Zarządcy rozkładu są obiektami odpowiednich klas.

3 Komponenty wizualne i kontenery 3 Aplikacja komunikuje się z użytkownikiem za pomocą okna lub wielu okien Okna AWT są kontenerami, do których dodajemy komponenty wizualnej interakcji z użytkownikiem (w tym inne kontenery) Okna Swing zawierają tzw. contentpane, który jest kontenerem do którego domyślnie dodajemy komponenty wizualnej interakcji (w tym inne kontenery). Okna (w tym "okno" apletu) są zawsze kontenerami najwyższego poziomu w hierarchii zawierania się komponentów Współdziałanie użytkownika z aplikacją odbywa się na zasadzie obsługi zdarzeń (np. zdarzenia kliknięcia w przycisk). Obsługą zdarzeń zarządza specjalny, równolegle z naszym programem wykonujący się kod w JVM wątek obsługi zdarzeń. AWT (Abstract Windowing Toolkit) obecny w Javie od samego początku - jest zestawem klas, definiujących proste komponenty wizualnej interakcji. Są to komponenty ciężkie tzn. realizowane poprzez użycie graficznych bibliotek GUI systemu operacyjnego: ubogie możliwości graficzne i interakcyjne komponentów, brak komponentów istotnych dla oprogramowania nowoczesnych GUI (np. tabel) zależny od platformy systemowej wygląd komponentów

4 Komponenty wizualne i kontenery 4 Odpowiedzią na te problemy oraz ich rozwiązaniem jest pakiet Swing (JFC Java Foundation Classes) (javax.swing i podpakiety), który zawiera dużo więcej niż AWT komponentów - nowych wobec AWT oraz mających rozbudowane właściwości odpowiedników AWT. Wszystkie komponenty Swinga oprócz kontenerów znajdujących się najwyżej w hierarchii zawierania się komponentów (kontenerów najwyższego poziomu) są komponentami lekkimi. Komponenty lekkie: są rysowane za pomocą kodu Javy w obszarze jakiegoś komponentu ciężkiego znajdującego się wyżej w hierarchii zawierania się komponentów (zwykle jest to kontener najwyższego poziomu). mogą być przezroczyste, a zatem mogą przybierać wizualnie dowolne kształty mają wygląd niezależny od platformy i modyfikowalny (Look&Feel) Uwaga: możliwe jest umieszczanie w jednym kontenerze komponentów lekkich (np. Swinga) i ciężkich (AWT), jednak jest to nie polecane i obarczone pewnymi restrykcjami. Zalecane jest, aby dodawać komponenty Swinga do contentpane okna ramowego Swingu (JFrame).

5 Hierarchia komponentów AWT i Swing 5

6 Hierarchia komponentów AWT i Swing 6

7 Hierarchia komponentów AWT i Swing 7 Wnioski, które wynikają z tej hierarchii : podstawowe właściwości wszystkich komponentów (i AWT i Swing) określa klasa Component z pakietu java.awt; w klasie tej znajdziemy mnóstwo użytecznych metod do ustalania i pobierania właściwości dla każdego z możliwych komponentów, podstawowe właściwości i użyteczne metody dla wszystkich kontenerów określa klasa Container, szczególne dla lekkich komponentów Swinga, ale wspólne dla nich wszystkich, właściwości określa klasa JComponent specyficzne właściwości i funkcjonalność poszczególnych rodzajów komponentów zdefiniowane są w klasach tych komponentów

8 Komponenty Swing Przyciski JButton odpowiednik Button z AWT, JToggleButton przycisk dwustanowy o wyglądzie normalnego przycisku, JCheckBox odpowiednik CheckBox z AWT, JRadioButton odpowiednik RadioButton z AWT. Podstawowe funkcje wszystkch klas przycisków określone są w klasie AbstractButton. Przyciski przełącznikowe implementują JToggleButton. Możliwości: tekst i/lub ikona na przycisku z dowolnym pozycjonowaniem różne ikony dla różnych stanów (wciśnięty, kursor myszki nad przyciskiem etc) ustalanie tekstu w HTML programistyczne symulowanie kliknięć (metoda doclick()) ustalanie mnemoników (metoda setmnemonic()) Etykieta: klasa JLabel Możliwości: tekst i/lub ikona z dowolnym pozycjonowaniem tekst HTML ustalenie mnemonika i związanie go z innym komponentem (setlabelfor(...)), np. polem edycyjnym (wciśnięcie alt+mnemonik powoduje przejście fokusu do danego komponentu np. pola edycyjnego) 8

9 Komponenty Swing 9

10 Komponenty Swing Menu rozwijalne: klasy JMenu, JMenuItem, JCheckBoxMenuItem, JRadioMenuItem. Ponieważ pochodzą od AbstractButton, to posiadają wszystkie właściwości przycisków. Menu kontekstowe: klasa JPopupMenu Suwak: klasa JSlider Ustalanie wartości za pomocą suwaka. W pełni konfigurowalny, jako etykiety może zawierać ikony. Dialog wyboru koloru: JColorChooser łatwy w użyciu w wersji standardowej. W pełni konfigurowalny - możliwość tworzenia wersji niestandardowych i wbudowywania ich w inne komponenty GUI. Inny dialog wyboru - JFileChooser - wybór plików. Pole edycyjne: JTextField do wprowadzania hasła: JPasswordField W JDK nowa klasa JFormattedTextField - z wbudowaną weryfikacją tekstu 10

11 Komponenty Swing 11

12 Komponenty Swing Wielowierszowe pole edycyjne: JTextArea Uwaga: wszystkie komponenty tekstowe pochodzą od klasy JTextComponent, która zapewnia bardzo elastyczne możliwości tworzenia różnych edytorów. Komponenty tekstowe są bardzo rozbudowane, jeśli chodzi o architekturę. Procesory dokumentów: JEditorPane i JTextPane Lista: klasa JList oparta na współpracy modelu danych listy z widokiem tych danych elementy: teksty i/lub obrazki, a nawet inne komponenty GUI (wygląd) różne elementy listy mogą mieć różny wygląd (kolor, czcionkę, obrazek lub nie etc). Lista rozwijalna: JComboBox oszczędność miejsca w GUI te same właściwości co lista + możliwość przechodzenia do elementu tekstowego po wciśnięciu pierwszej litery napisu, który on reprezentuje Tabela: klasa JTable Ogromne możliwości konfiguracyjne, przestawianie kolumn (myszką i programistycznie), różny wygląd kolumn (teksty, obrazki, komponenty interakcyjne), sortowanie wierszy, wielozaznaczanie (po wierszach i po kolumnach) Drzewo: klasa JTree Reprezentowanie hierarchii. Węzły drzewa mają te same właściwości co elementy tabeli (tzn. mogą być reprezentowane w postaci napisów i/lub ikon oraz innych komponentów) 12

13 Komponenty Swing 13

14 Właściwości komponentów (AWT i Swing) Wszystkie komponenty wywodzą się z abstrakcyjnej klasy Component, która definiuje metody, m.in. ustalające właściwości komponentów. Mamy dwa rodzaje komponentów: komponenty-kontenery (takie, które mogą zawierać inne komponenty) oraz komponenty terminalne (nie mogą zawierać innych komponentów). Właściwości mogą być pobierane za pomocą metod getnnn() lub (dla właściwości typu boolean) isnnn() i ustalane (jeśli to możliwe) za pomocą metod setnnn(...)., gdzie NNN nazwa właściwości. Do najogólniejszych właściwości wszystkich komponentów należą: rozmiar (Size), szerokość (Width), wysokość (Height), położenie (Location), rozmiar i położenie (Bounds), minimalny rozmiar (MinimumSize), preferowany rozmiar (PreferredSize), maksymalny rozmiar (MaximumSize),wyrównanie po osi X (AlignmentX), wyrównanie po osi Y (AlignmentY), czcionka (obiekt klasy Font), kolor tła (Background) (kolor jest obiektem klasy Color, kolor tła ma znaczenie tylko dla nieprzezroczystych komponentow), kolor pierwszego planu (Foreground), rodzic (Parent) (kontener, który zawiera dany komponent), nazwa (Name) (komponenty otrzymują domyślne nazwy; można je zmieniać), widzialność (Visible), lekkość (LigthWeight), przezroczystość (Opaque), dostępność (Enabled). 14

15 Właściwości komponentów 15 Rozmiary i położenie komponentów nie są znane dopóki komponenty nie zostaną zrealizowane (uwidocznione lub okno, w którym się znajdują nie zostanie spakowane). Położenie komponentu określane jest przez współrzędne (x,y), a punkt (0,0) oznacza lewy górny róg obszaru, w którym znajduje się komponent (jest to ten obszar kontenera, do którego mogą być dodane komponenty). Zmiana położenia i rozmiarów za pomocą metod set ma w zasadzie sens tylko dla komponentów znajdujących się w kontenerach bez zarządcy rozkładu lub dla komponentów-okien. Aby ustalić rozmiar okna frame piszemy np.: frame.setsize(200, 200); Metoda pack()w klasie Window (dziedziczonej przez Frame i JFrame) pozwala ustalić rozmiary okna, tak by były dokladnie takie (i nie większe), żeby zmieścić wszystkie znajdujące się w nim komponenty: frame.pack(); Czcionka jest obiektem klasy Font, tworzonym za pomocą konstruktora gdzie: Font(nazwa_czcionki, styl, rozmiar) nazwa_czcionki - jest łańcuchem znakowym, określającym rodzaj czcionki (np. "Dialog") styl - jest jedną ze stałych statycznych typu int z klasy Font: Font.BOLD, Font.ITALIC, Font.PLAIN (kombinacje uzyskujemy poprzez sumę logiczną np. Font.BOLD Font.ITALIC) rozmiar - liczba całkowita określająca rozmiar czcionki w punktach.

16 Właściwości komponentów Podstawowe, logiczne nazwy czcionek to: Serif, SansSerif, Dialog i MonoSpaced. Zatem, aby np. dla przycisku b ustalić czcionkę, piszemy JButton b = new JButton("Tekst na przycisku"); b.setfont(new Font("Dialog", Font.PLAIN, 14); Kolor jest obiektem klasy Color, która ma kilka konstruktorów oraz udostępnia stałe statyczne typu Color z predefiniowanymi kolorami, np. Color.red, Color.blue, Color.white,... Kolory przycisku możemy więc ustalić za pomocą takich konstrukcji: b.setbackground(color.blue); b.setforeground(color.white); albo: int r = 200, g = 200, b = 255; b.setbackground(new Color(r,g,b)); Zablokowanie/odblokowanie komponentu Komponenty gotowe do interakcji są odblokowane (enabled). Zablokowanie komponentu uniemożliwia interakcję z nim. Np. jeśli b jest przyciskiem // zablokowanie; kliknięcia w przycisk nie będą "przyjmowane" b.setenabled(false); // odblokowanie: if (!b.isenabled()) b.setenabled(true); 16

17 Właściwości komponentów 17 Uwidacznianie komponentów Wszystkie komponenty, oprócz tych wywodzących się z klasy Window, są domyślnie widoczne. Pojawiają się one na ekranie, gdy zostały dodane do jakiegoś kontenera i kontener jest/został uwidoczniony. W trakcie działania programu można czynić komponenty niewidocznymi i przywracać ich widzialność, np: JButton b = new JButton(...);... b.setvisible(false); // stanie się niewidoczny... if (!b.isvisible()) b.setvisible(true); // gdy niewidoczny, uwidaczniamy Przezroczystość komponentów Wszystkie komponenty AWT (jako ciężkie) są nieprzezroczyste (isopaque() zwróci true). Komponenty lekkie mogą być przezroczyste lub nie. Domyślnie większość lekkich komponentów Swing jest nieprzezroczysta. Wyjątkiem jest etykieta JLabel. Zatem aby ustalić tło etykiety Swinga musimy napisać: JLabel l = new JLabel("Jakaś etykieta"); l.setopaque(true); l.setbackground(color.yellow);

18 Kontenery Swing Kontenery - to komponenty, które mogą zawierać inne komponenty (w tym inne kontenery). Podstawowe kontenery to: Panel: klasa JPanel - służy do grupowania komponentów W Swingu mamy też wyspecjalizowane kontenery (panele dzielone, zakładkowe, przewijane), które mają specjalną konstrukcję i wobec nich używamy innych metod ustalania zawartości: Panel dzielony: klasa JSplitPane - podział kontenera na dwie części (poziomo lub pionowo) z możliwością przesuwania belki podziału dla ustalenia rozmiarów widoków części Panel zakładkowy: JTabbedPane - zakładki służą do wybierania komponentów, które mają być uwidocznione w panelu Panel przewijany: JScrollPane - służy do pokazywania komponentów, które nie mieszczą się w polu widoku; suwaki umożliwiają "przewijanie" widoku komponentu, tak, by odsłaniać kolejne jego fragmenty. JTextArea i JList powinny być umieszczane w JScrollPane, jeśli ich zawartość (wiersze tekstu, elementy listy) może się powiększać. Pasek narzędzi: JToolBar Panele są umieszczane w innych kontenerach - np. oknach. Domyślnie panele są widoczne, a okna - nie. 18

19 Kontenery Swing 19

20 Kontenery Swing metody. Okna. 20 Podstawowe metody (oprócz odziedziczonych z klasy Component) to: add(<nazwa komponentu>) dodawanie komponentu do kontenera, remove(<nazwa komponentu>) usunięcie komponentu z kontenera. A ponadto: getcomponentcount() zwraca liczbę komponentów, getcomponent(int n) zwraca referencję do n-tego komponentu, getcomponents() zwraca tablicę wszystkich komponentów, setlayout(...) ustawia rozmieszczenie komponentów. Okna to kontenery najwyższego poziomu, za pomocą których aplikacja komunikuje się z użytkownikiem. Najważniejsze klasy, które tworzą okna to: JFrame, JDialog, JWindow, JInternalFrame. Główne okno aplikacji jest obiektem klasy JFrame, np: JFrame okno = new JFrame( Okno główne ); W AWT komponenty dodajemy bezpośrednio do okien. W Swingu zwykle dodajemy komponenty (w tym kontenery) do contentpane (specjalnego kontenera, stanowiącego standardową zawartość okna). Dostęp do tego kontenera umożliwia metoda getcontentpane(), np: Container cp = okno.getcontentpane(); Kolejne komponenty umieszcza się w kontenerze przy użyciu metody add(...)

21 Okna podstawowe pojęcia 21 Podstawowe pojęcia, dotyczące okien okno wtórne (secondary window, child window) = okno które ma właściciela - inne okno okno pierwotne, właściciel innych okien (owner) = okno, które jest właścicielem innych okien Skutki prawa własności: zamknięcie okna pierwotnego powoduje zamknięcie okien wtórnych, które są jego własnością, minimalizacja okna pierwotnego powoduje minimalizację okien wtórnych, przesunięcie okna pierwotnego powoduje przesunięcie okien wtórnych (nie na wszystkich platformach). Okno wtórne może być oknem modalnym lub nie. Modalność oznacza, iż interakcja z oknem pierwotnym jest zablokowana do chwili zamknięcia okna wtórnego. Przy niemodalnym oknie wtórnym - możemy dalej działać na oknie pierwotnym. Z-order = uporządkowanie okien "po osi Z" (czyli jak się okna na siebie nakładają). Wszystkie okna w Javie, za wyjątkiem "okna" apletu (które tak naprawdę jest panelem) oraz okien wewnętrznych Swinga, pochodzą od klasy Window.

22 Okna ramowe - JFrame Ważnym rodzajem okna jest okno ramowe, mające ramki, pasek tytułowy, ikonki sterujące, oraz ew. pasek menu. Realizowane jest ono przez klasy Frame (w AWT) i JFrame (w Swing). Nie ma właściciela i nie może być oknem modalnym. Główne okno naszej aplikacji będzie zwykle obiektem klasy pochodnej od JFrame Okno ramowe tworzymy za pomocą konstruktora bezparametrowego lub z argumentem String, stanowiącym tytuł okna. Niektóre metody klas Frame/JFrame Image geticonimage() jaka ikonka przy minimalizacji? MenuBar getmenubar() pasek menu (dla Frame) JMenuBar getjmenubar() pasek menu (dla JFrame) String gettitle() tytuł boolean isresizable() czy możliwe zmiany rozmiarów? remove(menucomponent) usunięcie paska menu seticonimage(image) ustala ikonkę używaną przy minimalizacji setmenubar(menubar) ustala pasek menu (dla Frame) setjmenubar(jmenubar) ustala pasek menu (dla JFrame) setresizable(boolean) ustalenie możliwosci zmiany rozmiarów settitle(string) zmiana tytułu setundecorated(boolean) ustala, czy okno ma mieć "dekoracje" (tj. pasek tytułu, ramkę itp.) setextendedstate(int stan) ustala stan okna, reprezentowany przez jedną ze stałych statycznych z klasy Frame (podawane jako argument - stan): NORMAL, ICONIFIED, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MAXIMIZED_BOTH. Uwaga: nie na wszystkich platformach wszystkie w/w stany są możliwe do osiągnięcia. Aby stwierdzić, które tak, a które nie, używamy metody: Toolkit.isFrameStateSupported(int stan) 22

23 Okna dialogowe, wewnętrzne. 23 Dialog (obiekty klas Dialog i JDialog ) - to okno z ramką i tytułem, które ma właściciela i nie może mieć paska menu. Może natomiast być oknem modalnym lub nie, co zależy od naszych ustaleń. Podobnie jak Frame/JFrame klasa Dialog/JDialog zawiera metody pozwalające na pobieranie - ustalanie tytułu oraz możliwości zmiany rozmiarów. Dodatkowo metody boolean ismodal() i setmodal(boolean) pozwalają sprawdzać i ustalać właściwość modalności. Okna wewnętrzne (JInternalFrame) dostępne w Swingu są lekkimi komponentami o funkcjonalności okien ramowych. Podstawowe różnice wobec zwykłych okien ramowych (JFrame): niezależny od platformy wygląd muszą być dodawane do innych kontenerów dodatkowe możliwości programistyczne (np. dynamicznych zmian właściwości takich jak możliwość zmiany rozmiaru, możliwość maksymalizacji itp.) Operacja zamknięcia okna. Wszystkie okna Swing (JFrame, JDialog, JInternalFrame...) pozwalają na ustalenia co ma się stać w przypadku zamknięcia okna. Służy temu metoda setdefaultcloseoperation(int), której argument może przyjmować następujące wartości (są to nazwy odpowiednich statycznych stałych): DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE - operacja domyślna (chowa okno, ale nie likwiduje go) DISPOSE_ON_CLOSE - usunięcie okna, ale bez zamknięcia aplikacji EXIT_ON_CLOSE - powoduje zamknięcie aplikacji W AWT - dla wywołania określonych efektów przy zamknięciu okna (np. zakończenia aplikacji) musimy obsługiwać zdarzenie zamykania okna.

24 Umieszczanie komponentów w oknie - przykład 24 import java.awt.*; import javax.swing.*; public class Ramka extends JFrame{ public Ramka(){ super("ramka 2"); //Wywołanie konstruktora nadklasy setsize(250,70); //Ustawienie rozmiaru okna ramki setdefaultcloseoperation(jframe.exit_on_close); //Umieszczanie komponentów w oknie JPanel p = new JPanel(); p.add(new JLabel("Etykieta") ); p.add(new JButton("Przycisk") ); p.add(new JTextField("Pole textowe")); Container cp = getcontentpane(); cp.add(p); setvisible(true);//wyświetlenie ramki na ekranie public static void main(string []args){ new Ramka();

25 Zarządcy rozkładów 25 Z każdym kontenerem jest skojarzony tzw. zarządca rozkładu, który określa rozmiary i położenie komponentów przy wykreślaniu kontenera (a więc gdy jest on uwidaczniany lub zmieniają się jego rozmiary). W klasie każdego z komponentów znajdują się metody: getpreferredsize(), getminimumsize() i getmaximumsize(), zwracające - różne w zależności od typu komponentu - rozmiary preferowane, minimalne i maksymalne (obiekty typu Dimension z publicznymi polami width i height) Rozmiary te - w różny sposób przez różnych zarządców rozkładów - są brane pod uwagę przy układaniu komponentów. Dla lekkich komponentów Swinga rozmiary te możemy ustalać za pomocą odpowiednich metod set... Zdarza się czasem, że zmiany rozmiarów jakiegoś komponentu, umieszczonego w kontenerze (np. na skutek jakichś pośrednich odwołań z programu) nie skutkują w rozkładzie komponentów w kontenerze. Należy wtedy wywołać metodę revalidate() na rzecz komponentu, którego rozmiary uległy zmianie, co spowoduje ponowne ułożenie komponentów w kontenerze przez zarządcę rozkładu. Jeśli zmiany ułożenie nie będą uwidocznione na ekranie - należy dodatkowo wywołać metodę repaint(), również na rzecz zmienionego komponentu. Użycie pack() wobec okna zawsze powoduje wywołanie metod układania komponentów przez zarządców rozkładu dla wszystkich kontenerów w hierarchii zawierania się komponentów w oknie.

26 Zarządcy rozkładów Jak prawie wszystko w Javie - zarządcy rozkładu są obiektami odpowiednich klas. Klasy te implementują interfejs LayoutManager lub rozszerzający go LayoutManager2. Np. rozkłady Flow, Border i Grid są zarządzane przez obiekty klas FlowLayout, BorderLayout i GridLayout. Aby ustalić rozkład komponentów musimy: stworzyć obiekt-zarządcę rozkładu, ustalić ten rozkład dla kontenera. Ustalenie zarządcy rozkładu w AWT dla kontenera odbywa się za pomocą metody setlayout np. FlowLayout flow = new FlowLayout(); Frame f = new Frame(); f.setlayout(flow); Okna Swinga mają złożoną architekturę i zwykle rozkład komponentów ustalamy dla contentpane okna np.: JFrame frame = new JFrame(); frame.getcontentpane().setlayout(new FlowLayout()); Samo odwołanie: frame.setlayout(...) domyślnie ustala rozkład w contentpane (a nie w oknie). 26

27 Rozkład - FlowLayout 27 FlowLayout (rozkład domyślny dla Panel, JPanel) Komponenty ułożone są w wierszu. Przy zmianie rozmiarów kontenera rozmiary komponentów nie zmieniają się Jeśli szerokość kontenera jest za mała, pojawiają się dodatkowe wiersze. Można ustalić, jak mają być wyrównane komponenty (do lewej, w centrum, do prawej): służą temu stałe FlowLayout.LEFT, FlowLayout.CENTER, FlowLayout.RIGHT podawane jako argument konstruktora Można ustalić odstępy (w pionie i poziomie) pomiędzy komponentami. Wersje konstruktorów FlowLayout() // (center, odstępy 5) FlowLayout(int) // podane wyrównanie FlowLayot(int, int, int) // podane wyrównanie oraz odstępy // poziom, pion

28 Rozkład - BorderLayot 28 BorderLayout (układ domyślny dla Frame, Window i Dialog oraz contentpane okien Swinga) Komponenty ułożone są "geograficznie": "North", "East", "South", "West", "Center" Używa się metody cont.add(comp, loc), gdzie loc - napis oznaczający miejsce lub stałą całkowitoliczbową BorderLayout.NORTH, BorderLayout.CENTER, etc. Komponent dodany w miejscu "Center" wypełnia całe pozostawiane przez inne komponenty miejsce. Komponenty zmieniają rozmiary wraz ze zmianami rozmiaru kontenera: "North" i "South" - w poziomie, ale nie w pionie "West" i "East" - w pionie, ale nie w poziomie "Center" - w obu kierunkach Można podać odstępy między komponentami (pion, poziom) new BorderLayout(odst_poz, odst_pion)

29 Rozkład - GridLayout 29 GridLayout Siatka (tablica) komponentów Rozmiary wszystkich komponentów będą takie same Zmieniają się wraz ze zmianami rozmiaru kontenera Konstruktory: GridLayout(n, m) // tablica n x m komponentów, Jeśli n=0 lub m=0, to dany wymiar tablicy zostanie ustalony dynamicznie na podstawie drugiego wymiaru i liczby komponentów w kontenerze. GridLayout(n, m, hgap, vgap) // z podanymi odstępami w poziomie i pionie

30 Rozkład BoxLayout BoxLayout to bardzo elastyczny rozkład, który układa komponenty w jednym wierszu lub w jednej kolumnie (poziomo lub pionowo). W odróżnieniu od rozkładu GridLayout brane są przy tym pod uwagę preferowane, mnimalne i maksymalne rozmiary komponentów (dla komponentów Swing setminimumsize() i setmaximumsize()) oraz ich wyrównanie w kontenerze (w Swingu: metody setalignmentx(...) i setalignmenty(...) z argumentami - stałymi statycznymi z klasy Component: LEFT_ALIGNMENT, CENTER_ALIGNMENT, RIGHT_ALIGNMENT, BOTTOM_ALIGNMENT, TOP_ALIGNMENT). Aby istniejącemu kontenerowi cont nadać rozkład BoxLayout: pionowy: cont.setlayout(new BoxLayout(cont, BoxLayout.Y_AXIS)); poziomy: cont.setlayout(new BoxLayout(cont, BoxLayout.X_AXIS)); W przypadku tworzenia nowego kontenera można użyć klasy Box, która definiuje kontener lekki o rozkładzie BoxLayout (uwaga: Box nie jest J-komponentem) Tworzenie obiektu Box: za pomocą konstruktora: Box(orient), gdzie orient - BoxLayout.X_AXIS lub Y_AXIS za pomocą statycznych metod zwracających referencję do utworzonego obiektu Box: Box.createHorizontalBox() lub Box.createVerticalBox(). W klasie Box zdefiniowano też wygodne metody statyczne do wprowadzania "wypełniaczy" przestrzeni w rozkładzie BoxLayout. Te wypełniacze to: klej (glue) (Box.createGlue()), sztywny obszar (rigid area) (Box.createRigidArea(Dimension)) oraz wypełniacz (boxfiller) (new Box.Filler(min, pref, max)). 30

31 Rozkłady Do bardziej zaawansowanych rozkładów należą: GridBagLayout, CardLayout oraz GroupLayout(przeznaczony raczej do stosowania w środowiskach wizualnych edytorów GUI). Wszystkie te klasy implementują interfejs LayoutManager2, który rozszerza interfejs LayoutManager. Implementując te interfejsy we własnych klasach możemy również tworzyć własnych zarządców rozkładu. Dostępne są także gotowe, przygotowane przez różnych programistów, ciekawe rozkłady, które nie są w "standardzie" Javy, ale mogą być łatwo doinstalowane. Np. bardzo elastyczne i łatwe w użyciu są rozkłady TableLayout i MigLayout. Możliwe jest także, by kontener nie miał żadnego rozkładu. Ponieważ wszystkie kontenery (oprócz ScrollPane w AWT i wyspecjalizowanych kontenerów Swing) mają jakiś domyślny rozkład, to brak rozkładu musimy zaordynować sami za pomocą odwołania: kontener.setlayout(null); W takim kontenerze posługujemy się "absolutnym" pozycjonowaniem i wymiarowaniem komponentów, np. za pomocą metody setbounds(x,y,w,h), gdzie x, y - współrzędne położenia komponentu, w,h - szerokość i wysokość. Podsumowując: użycie rozkładów pozwala programiście unikać oprogramowania zmian rozmiarów i położenia komponentów przy zmianie rozmiarów kontenera. Wyszukane układy komponentów GUI zwykle uzyskamy łatwiej poprzez umiejętne łączenie paneli z różnymi prostszymi rozkładami. 31

32 Rozkłady 32

33 Rozkłady import java.awt.*; import javax.swing.*; public class LayoutTest { public static void main(string[] args) { // liczba komponentów dodawanych do każdego rozkładu final int CNUM = 5; // nazwy rozkładów (opisy) String lmnames[] = {"Flow Layout", "Flow (left aligned)", "Border Layout", "Grid Layout(1,num)", "Grid Layout(num, 1)", "Grid Layout(n,m)",; // odpowiedni zarządcy LayoutManager lm[] = {new FlowLayout(), new FlowLayout(FlowLayout.LEFT), new BorderLayout(), new GridLayout(1, 0), new GridLayout(0, 1), new GridLayout(2, 0),; String gborders[] = {"West", "North", "East", "South", "Center"; // kolory paneli dla rozkładów Color colors[] = {new Color(191, 225, 255), new Color(255, 255, 200), new Color(201, 245, 245), new Color(255, 255, 140), new Color(161, 224, 224), new Color(255, 255, 200); 33

34 Rozkłady 34 // główne okno JFrame frame = new JFrame("Layouts show"); Container cp = frame.getcontentpane(); // jego contentpane cp.setlayout(new GridLayout(0, 2)); // rozkład cp = siatka for (int i = 0; i < lmnames.length; i++) { // kolejne panele z kolejnymi rozkładami JPanel p = new JPanel(); p.setbackground(colors[i]); // ramka z opisem p.setborder(borderfactory.createtitledborder(lmnames[i])); p.setlayout(lm[i]); // ustalenie rozkładu for (int j = 0; j < CNUM; j++) { // dodanie komponentów JButton b = new JButton("Przycisk " + (j + 1), null); p.add(b, gborders[j]); cp.add(p); frame.setdefaultcloseoperation(jframe.exit_on_close);// domyślna //op. zamkn. okna frame.pack(); frame.setvisible(true);

35 Schemat aplikacji Swing Interakcja użytkownika z aplikacją graficzną odbywa się poprzez obsługę zdarzeń (takich jak np. kliknięcie w przycisk). Obsługą zdarzeń zajmuje się specjalny, uruchamiany przez JVM równolegle z głównym wątkiem aplikacji, wątek obsługi zdarzeń. Zanim dojdzie do interakcji z użytkownikiem, okno aplikacji musi być zbudowane i uwidocznione, muszą być skonstruowane komponenty, muszą uzyskać one jakieś właściwości (np. kolor, czcionkę) i być dodane do kontenerów, a w końcu i do okien. Komponenty Swing zostały zbudowane w taki sposób, że wszelkie manipulacje na nich (tworzenie, odczytywanie i zmiany ich właściwości) muszą się odbywać w jednym wątku - najwygodniej w wątku obsługi zdarzeń. Zatem kod, który działa na komponentach Swing, umieszczamy w metodach obsługujących zdarzenia albo w wątku obsługi zdarzeń za pomocą statycznych metod invokelater oraz invokeandwait z klasy java.awt.eventqueue. Tak samo nazwane metody znajdują się również w klasie SwingUtilities (delegują one odwołania do odpowiednich metod z klasy EventQueue). Argumentem tych metod jest referencja do obiektu klasy implementującej interfejs Runnable. Kod operujący na komponentach Swing umieszczamy w zdefiniowanej w tej klasie metodzie run(). Metoda invokelater przekaże ten kod do wykonania przez wątek obsługi zdarzeń (umieści kod w kolejce zdarzeń), wykonanie bieżącego wątku będzie kontynuowane, natomiast nasz kod umieszczony w kolejce zdarzeń zostanie wykonany wtedy, gdy wątek obsługi zdarzeń obsłuży zdarzenia znajdujące się w kolejce przed nim. Tak samo działa metoda invokeandwait, z tą różnicą, że po jej wywołaniu działanie bieżącego wątku zostanie wstrzymane do chwili wykonania przekazanego kodu przez wątek obsługi zdarzeń. Zatem nie należy wywoływać tej metody z wątku obsługi zdarzeń, bowiem może to zablokować GUI. 35

36 Schemat aplikacji Swing 36 Schemat wywołania metody invokelater(..) SwingUtilities.invokeLater(new Runnable() { public void run() { // tu działania na komponentach Swing ); Generalnie wszelkie działania na GUI (tworzenie komponentów, dodawanie komponentów do kontenerów, ustalanie właściwości komponentów wizualnych) winny być wykonywane w wątku obsługi zdarzeń. Od tej reguły są wyjątki. Mianowicie, niektóre metody działające na komponentach Swinga są wielowątkowo bezpieczne (mogą być wywoływane z wielu wątków, nie tylko z wątku obsługi zdarzeń). Należy do nich np. metoda repaint(). W dokumentacji metod zawsze zaznaczono, czy są one wielowątkowo bezpieczne (thread-safe).

37 Szablon aplikacji Swing 37 import java.awt.*; import javax.swing.*; public class GuiSwing extends JFrame { public GuiSwing() { //działania inicjacyjne, nie związane z komponentami Swing // // budujemy okno; // ponieważ jest to działanie na komponentach wizualnych // - zrobimy to w wątku obsługi zdarzeń SwingUtilities.invokeLater(new Runnable() public void run() { creategui(); );

38 Szablon aplikacji Swing 38 protected void creategui() { // ustalenie tytułu okna settitle("okno aplikacji"); Container cp = getcontentpane(); // ustalenie (jeśli trzeba) rozkładu cp.setlayout(new FlowLayout()); // tworzenie komponentów np. JLabel lab = new JLabel("Etykieta"); JButton b = new JButton("Przycisk"); // Ustalenie własciwości komponentów, lab.setforeground(color.red); b.setforeground(color.blue); // Dodanie komponentów do contentpane okna np. cp.add(lab); cp.add(b); // Ustalenie domyślnej operacji zamknięcia okna setdefaultcloseoperation(exit_on_close); // ustalenie rozmiarów okna, np.: pack();

39 Szablon aplikacji Swing 39 // ustalenie położenia okna np. wycentrowanie setlocationrelativeto(null); // pokazanie okna setvisible(true); public static void main(string[] args) { new GuiSwing(); Uwaga. Wszelkie długotrwałe działania (np. wyszukiwanie w systemie plików, ściąganie danych z Internetu) winny być wykonywane poza wątkiem obsługi zdarzeń. W przeciwnym razie będą blokować interakcję z GUI (GUI staje się "zamrożone"). Do uruchamiania takich działań z kodów wykonujących się w wątku obsługi zdarzeń służy klasa SwingWorker.

40 Delegacyjny model obsługi zdarzeń 40 Interakcja użytkownika z GUI naszej aplikacji polega na wywoływaniu zdarzeń (np. kliknięcie w przycisk, wciśnięcie klawisza na klawiaturze etc). Zatem programowanie GUI jest programowaniem zdarzeniowym. Jest ono oparte na koncepcji tzw. funkcji callback. Funkcja typu callback zawarta w naszym programie jest wywoływana (zazwyczaj) nie przez nasz program, ale przez sam system na przykład w reakcji na zdarzenia takie jak wciśnięcie klawisza czy kliknięcie myszką. Funkcja ta obsługuje zdarzenie. W Javie dodatkowo zastosowano koncepcję delegacyjnego modelu obsługi zdarzeń, która umożliwia przekazanie obsługi zdarzenia, które przytrafia się jakiemuś obiektowi (źródło zdarzenia (source)) do innego obiektu (słuchacza zdarzenia (listener)). Zdarzenia (event) są obiektami odpowiednich klas, określających rodzaj zdarzeń. (Obsługa zdarzeń jest zawarta w pakiecie java.awt.event. ) Słuchacze są obiektami klas implementujących interfejsy nasłuchu. Interfejsy nasłuchu określają zestaw metod obsługi danego rodzaju zdarzeń. W klasach słuchaczy definiuje się metody odpowiedniego interfejsu nasłuchu zdarzeń, które określają co ma się dziać w wyniku zajścia określonego zdarzenia (metody obsługi odpowiednich zdarzeń) Zdarzenie (obiekt odpowiedniej klasy zdarzeniowej) jest przekazywane do obsługi obiektowi-słuchaczowi tylko wtedy, gdy Słuchacz ten jest przyłączony do Źródła zdarzenia (przyłączenie za pomocą odwołania z.addnnnlistener(h), gdzie: z Źródło zdarzenia, NNN - rodzaj zdarzenia, h Słuchacz danego rodzaju zdarzenia)

41 Delegacyjny model obsługi zdarzeń 41 Przekazanie zdarzenia do obsługi polega na wywołaniu odpowiedniej dla danego zdarzenia metody obsługi zdarzenia (zdefiniowanej w klasie Słuchacza) z argumentem obiekt-zdarzenie. Argument (obiekt klasy zdarzeniowej) zawiera informacje o okolicznościach zajścia zdarzenia (np. komu się przytrafiło? kiedy? jakie ma inne właściwości?). W Javie standardowo zdefiniowano bardzo dużo różnych rodzajów zdarzeń i interfejsów ich nasłuchu. Rozpatrzmy ogólne zasady na przykładzie zdarzenia "akcja" (obiekt klasy ActionEvent), które powstaje: po kliknięciu w przycisk lub naciśnięciu spacji, gdy przycisk ma fokus (zdolność do przyjmowania zdarzeń z klawiatury), po naciśnięciu ENTER w polu edycyjnym, po wyborze opcji menu, po podwójnym kliknięciu myszką / wciśnięciu ENTER na liście AWT (ale tylko AWT, nie dotyczy to listy Swingu - JList) lub na liście rozwijalnej Swing - JComboBox (powstaje - o ile do Źródła przyłączono odpowiedniego Słuchacza akcji czyli obiekt klasy implementującej interfejs nasłuchu akcji - ActionListener) Uwaga: zdarzenie "akcja" jest zdarzeniem semantycznym - niezależnym od fizycznego kontekstu (zauważmy jak w różnych fizycznych okolicznościach ono powstaje kliknięcie, naciśnięcie spacji lub ENTER, w różnych "fizycznych" kontekstach na przycisku, w polu edycyjnym, w menu). Nie należy go mylić ze zdarzeniem kliknięcia myszką (czysto fizyczne zdarzenie).

42 Delegacyjny model obsługi zdarzeń 42 Przykład. Wyobraźmy sobie teraz, że w naszym GUI mamy jeden przycisk. Klikając w ten przycisk (w tym programie) nie uzyskamy żadnych efektów (oprócz widocznej zagwarantowanej przez domyślny look&feel zmiany stanu przycisku: wyciśnięty wciśnięty wyciśnięty). Chcemy by po kliknięciu w przycisk (lub naciśnięciu SPACJI, gdy przycisk ma fokus) wyprowadzony został na konsolę napis "Wystąpiło zdarzenie!". Kliknięcie lub naciśnięcie spacji na przycisku wywoła zdarzenie "akcja", jeśli do przycisku przyłączymy słuchacza akcji. Musimy zatem stworzyć obiekt słuchacza akcji i przyłączyć go do przycisku. Klasa słuchacza akcji musi implementować interfejs nasłuchu akcji (ActionListener), i w konsekwencji - zdefiniować jego jedyną metodę actionperformed. W tej metodzie zawrzemy kod, który zostanie uruchomiony po kliknięciu w przycisk, np. wyprowadzenie na konsolę napisu. public class Handler implements ActionListener { public void actionperformed(actionevent e) { // instrukcje obsługujące zdarzenie Klasa-słuchacz może też implementować większą liczbę interfejsów nasłuchu (określamy w ten sposób zestaw obsługiwanych zdarzeń).

43 Delegacyjny model obsługi zdarzeń Przyłączanie słuchacza do komponentu. Wszystkie komponenty Swing umożliwiają przyłączanie/odłączanie określonych typów słuchaczy. Służą do tego metody: addxxxlistener() oraz removexxxlistener(), gdzie XXX jest typem słuchacza. Np.: zdarzenie ActionEvent może być obsłużone przez słuchacza implementującego interfejs ActionListener. Słuchacz taki może być przyłączony do komponentów, które mają dostęp do metody addactionlistener(). Są to: Button, List, TextField, MenuItem oraz klasy pochodne. Np.: Handler sluchacz = new Handler(); przycisk.addactionlistener(sluchacz); Przedstawimy teraz trzy sposoby obsługi powyższego zdarzenia: definiując osobną klasę słuchacza implementując interfejs ActionListener w klasie, definiującej okno naszej aplikacji używając anonimowych klas wewnętrznych W przypadku interfejsów z wieloma metodami obsługi, spośród których interesuje nas tylko jedna lub dwie, lepszym rozwiązaniem może okazać się odziedziczenie odpowiedniego adaptera w anonimowej klasie wewnętrznej niż implementacja interfejsu w klasie GUI, gdyż obciąża nas ona koniecznością zdefiniowania pustych metod obsługi (metod obsługi tych zdarzeń, którymi nie jesteśmy zainteresowani) 43

44 44 Delegacyjny model obsługi zdarzeń przykład 1 import java.awt.event.*; // konieczny dla obsługi zdarzeń import javax.swing.*; //procedura obsługi class Handler implements ActionListener { public void actionperformed(actionevent e) { System.out.println("Wystąpiło zdarzenie!"); public class GUI extends JFrame { public GUI() { //konstruktor JButton b = new JButton( "<html><center>przycisk<br>reagujący na wciśnięcie</center></html>"); Handler h = new Handler(); b.addactionlistener(h);//dodanie słuchacza getcontentpane().add(b); setdefaultcloseoperation(dispose_on_close); pack(); setlocationrelativeto(null); setvisible(true); public static void main(string[] a) { SwingUtilities.invokeLater(new Runnable() { public void run() { new GUI(); );

45 Delegacyjny model obsługi zdarzeń przykład 2 45 Możemy implementować interfejs ActionListener w klasie, definiującej okno naszej aplikacji: class GUI extends JFrame implements ActionListener { GUI() { JButton b = new JButton("Przycisk"); b.addactionlistener(this); //TEN obiekt będzie słuchaczem getcontentpane().add(b); pack(); show(); public void actionperformed(actionevent e) { System.out.println("Wystąpiło zdarzenie!"); public static void main(string[] a) { SwingUtilities.invokeLater(new Runnable() { public void run() { new GUI(); );

46 Delegacyjny model obsługi zdarzeń przykład 3 Możemy też implementację interfejsu nasłuchu umieścić w anonimowej klasie wewnętrznej: public class InnerHandler extends JFrame { ActionListener al = new ActionListener(){ public void actionperformed(actionevent e){ System.out.println("Wystąpiło zdarzenie!"); ; public InnerHandler(){ JButton b = new JButton( "<html><center>przycisk<br>reagujący na wciśnięcie</center></html>"); b.addactionlistener(al);//dodanie słuchacza getcontentpane().add(b); setdefaultcloseoperation(dispose_on_close); pack(); setlocationrelativeto(null); setvisible(true); public static void main(string[] a) { SwingUtilities.invokeLater(new Runnable() { public void run() { new InnerHandler(); ); 46

Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1

Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1 1 Programowanie w środowisku graficznym- wykład 9 Programowanie GUI cz1 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

Aplikacje w Javie wykład 12 Programowanie GUI

Aplikacje w Javie wykład 12 Programowanie GUI Aplikacje w Javie wykład 12 1 Programowanie GUI Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ C.

Bardziej szczegółowo

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

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak 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ń

Bardziej szczegółowo

Programowanie graficznych interfejsów użytkownika

Programowanie graficznych interfejsów użytkownika Programowanie obiektowe Programowanie graficznych interfejsów użytkownika Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie

Bardziej szczegółowo

Podstawy Języka Java

Podstawy Języka Java Podstawy Języka Java Wprowadzenie do AWT AWT Abstract Window Toolkit, biblioteka wykorzystywana do budowy graficznych interfejsów użytkownika w Javie AWT do obsługi elementów interfejsu użytkownika wykorzystuje

Bardziej szczegółowo

Programowanie zdarzeniowe

Programowanie zdarzeniowe Programowanie zdarzeniowe II. Biblioteka Swing Małgorzata Prolejko ZDA JA16Z03 Plan Struktura Swing Komponenty proste Ramki Kolejność warstw Zarządca układu Panele Komponenty złożone Okna dialogowe i wewnętrzne

Bardziej szczegółowo

Java - interfejs graficzny

Java - interfejs graficzny Java - interfejs graficzny Pakiet Swing Pakiet Swing przygotował: pawel@kasprowski.pl Czym jest Swing? Rozszerzenie AWT (Abstract Windows Toolkit) do tworzenia GUI (Graphical User Interface) w Javie import

Bardziej szczegółowo

Kontenery i komponenty graficzne

Kontenery i komponenty graficzne JAVA Kontenery i komponenty graficzne Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Opracował: Andrzej Nowak Kontenery Aplikacja okienkowa składa

Bardziej szczegółowo

Programowanie zdarzeniowe

Programowanie zdarzeniowe Programowanie zdarzeniowe I. Podstawy obsługi zdarzeń Małgorzata Prolejko ZDA JA16Z03 Plan Pojęcie zdarzenia Klasy i obiekty słuchaczy Rejestracja słuchaczy Obsługa naciśnięcia przycisku Rozpoznawanie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 7 Marcin Młotkowski 8 kwietnia 2015 Plan wykładu Z życia programisty, część 1 1 Z życia programisty, część 1 2 3 Z życia programisty, część 2 Model View Controller MVC w

Bardziej szczegółowo

Tworzenie elementów graficznych

Tworzenie elementów graficznych Tworzenie elementów graficznych Elementy graficzne w Javie pozwalające tworzyć Graficzny Interfejs Użytkownika (GUI) możemy podzielić na dwie grupy: AWT (Abstract Window Toolkit) bibliotek klas służąca

Bardziej szczegółowo

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

Programowanie graficznego interfejsu użytkownika. Wykład 8. Maciej Wołoszyn 10 maja 2006 Programowanie graficznego interfejsu użytkownika Wykład 8 Maciej Wołoszyn mailto:woloszyn@fatcat.ftj.agh.edu.pl 10 maja 2006 Spis treści 1 JFC/Swing 1 1.1 Prosty przykład.................................

Bardziej szczegółowo

Graphic User Interfaces pakiet Swing

Graphic User Interfaces pakiet Swing Graphic User Interfaces pakiet Swing Streszczenie Celem wykładu jest zaprezentowanie podstaw tworzenia graficznych interfejsów przy użyciu pakietu Swing. Czas wykładu 90 minut. Można śmiało stwierdzić,

Bardziej szczegółowo

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

Programowanie w Javie Wykład 6 Okienka w Javie (AWT) Programowanie w Javie Wykład 6 Okienka w Javie (AWT) Płock 2014/2015 Wprowadzenie do AWT AWT Abstract Window Toolkit, wykorzystywany do budowy graficznych interfejsów użytkownika w Javie AWT do obsługi

Bardziej szczegółowo

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

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Interfejs GUI wysokiego poziomu Pojęcie

Bardziej szczegółowo

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

Kurs programowania. Wykład 4. Wojciech Macyna. 23 marca 2016 Wykład 4 23 marca 2016 Graficzny interfejs użytkownika - GUI W Javie możemy skorzystać z dwóch bibliotek do tworzenia graficznych interfejsów: AWT (Abstract Windowing Toolkit) podstawowa biblioteka będaca

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 5, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 5, część 1 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa

Bardziej szczegółowo

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

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Podstawy Swing. Tomasz Borzyszkowski

Podstawy Swing. Tomasz Borzyszkowski Podstawy Swing Tomasz Borzyszkowski Wprowadzenie Już Java 1.0 zawierała bibliotekę AWT (Abstract Window Toolkit) służącą do oprogramowania GUI. Kolejne wersje Java również wspierały to rozwiązanie. Swing

Bardziej szczegółowo

SWING. dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com

SWING. dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com SWING dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? Przykład aplikacji z GUI Zarządcy układu Obsługa zdarzeń Komponenty GUI Wprowadzenie obiektowy paradygmat do tworzenia

Bardziej szczegółowo

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH

PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH PROGRAMOWANIE APLIKACJI MULTIMEDIALNYCH JĘZYK JAVA wykład 1 GUI GRAFICZNY INTERFEJS UŻYTKOWNIKA Prowadzący: Tomasz Kowalski Rozwój GUI w Java 2 Biblioteki GUI (Graphical User Interface) w Java 1 miały

Bardziej szczegółowo

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

SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe. SWING ZAGADNIENIA: wprowadzenie, kontenery I komponenty, LayoutManager, komponenty tekstowe. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/ http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,

Bardziej szczegółowo

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

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Abstract Window Toolkit Przekazuje tworzenie i

Bardziej szczegółowo

Klasy abstrakcyjne. Klasę abstrakcyjną tworzymy przy pomocy modyfikatora abstract

Klasy abstrakcyjne. Klasę abstrakcyjną tworzymy przy pomocy modyfikatora abstract Klasy abstrakcyjne Klasa abstrakcyjna jest to klasa której obiekty nie mogą być tworzone, może być natomiast dziedziczona. Może posiadać konstruktor, może on być jednak wywołany tylko przez klasy pochodne.

Bardziej szczegółowo

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

Java niezbędnik programisty spotkanie nr 12. Graficzny interfejs użytkownika Java niezbędnik programisty spotkanie nr 12 Graficzny interfejs użytkownika 1 Graphical User Interface (GUI) Abstract Window Toolkit Swing słabo się prezentuje mało obiektowy projekt i implementacja zajęły

Bardziej szczegółowo

Java biblioteka Swing

Java biblioteka Swing Java biblioteka Swing Podstawowe klasy Klasa JComponent Klasa JFrame Klasa JFrame Klasa bazowa dla okien Ważne właściwości: settitle ( ) setdefaultcloseoperation ( ) setsize ( ), setlocation ( ) setlayout

Bardziej szczegółowo

Tworzenie i obsługa graficznego interfejsu uŝytkownika

Tworzenie i obsługa graficznego interfejsu uŝytkownika Tworzenie i obsługa graficznego interfejsu uŝytkownika Programowanie w środowisku rozproszonym. Wykład 3. Aplety aplikacje uruchamiane w środowisku przeglądarki - przykład import java.applet.applet; import

Bardziej szczegółowo

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

Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science Marcin Luckner Warsaw University of Technology Faculty of Mathematics and Information Science mluckner@mini.pw.edu.pl http://www.mini.pw.edu.pl/~lucknerm Wszystkie komponenty są rozmieszczane przez domyślny

Bardziej szczegółowo

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

Zaawansowane programowanie obiektowe. Wykład 3 część 2 Zaawansowane programowanie obiektowe Wykład 3 część 2 Środowisko Eclipse Tworzenie projektu File New project Java project Dodanie klasy File New Class Praca w Eclipse Przykład 1 import java.awt.*; public

Bardziej szczegółowo

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

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com GUI-Swing Wstęp do tworzenia prostych aplikacji z interfejsem graficznym (GUI) przy pomocy Swing, rysowanie prostych

Bardziej szczegółowo

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

Informatyka i Ekonometria Programowanie komputerów Ćwiczenia Tworzenie aplikacji wykorzystaniem graficznego interfejsu użytkownika - Swing. Kierunek: Informatyka i Ekonometria Przedmiot: Programowanie komputerów Forma zajęć: Ćwiczenia Temat: Tworzenie aplikacji z wykorzystaniem graficznego interfejsu użytkownika - Swing. Biblioteka SWING podstawowa

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

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

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia

Bardziej szczegółowo

Programowanie graficznych interfejsów uŝytkownika

Programowanie graficznych interfejsów uŝytkownika Programowanie obiektowe The Java Tutorials http://java.sun.com/docs/books/tutorial/ui/index.html Programowanie graficznych interfejsów uŝytkownika Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki

Bardziej szczegółowo

Obsługa zdarzeń w JAVIE ((ActionListener,ItemListener,TableModelListener))

Obsługa zdarzeń w JAVIE ((ActionListener,ItemListener,TableModelListener)) Obsługa zdarzeń w JAVIE ((ActionListener,ItemListener,TableModelListener)) "Sercem" działania aplikacji z graficznymi interfejsami użytkownika jest obsluga zdarzeń. JMenu, JToolBar, JButton Reguły ogólne

Bardziej szczegółowo

Programowanie Obiektowe GUI

Programowanie Obiektowe GUI Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu

Bardziej szczegółowo

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

Grafika i komunikacja człowiek komputer Laboratorium. Część 1: Wstęp do grafiki UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI Opracował: mgr inż. Przemysław Pardel, dr hab. Bogdan Kwolek v1.01 2010 Grafika i komunikacja człowiek komputer Laboratorium Część 1: Wstęp do grafiki ZAGADNIENIA

Bardziej szczegółowo

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

Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Tworzenie łącz w apletach Przykład 1 a) Program ProstyAplet2.class uruchomiony jako aplet w przeglądarce

Bardziej szczegółowo

Ćwiczenia 9 - Swing - część 1

Ćwiczenia 9 - Swing - część 1 Ćwiczenia 9 - Swing - część 1 Utwórz nowy projekt wybierając: File->New Project->Java Application, przy czym odznacz opcję Create Main Class. Kliknij prawym przyciskiem myszy na podfolder Source Packages

Bardziej szczegółowo

GUI - projektowanie interfejsów cz. II

GUI - projektowanie interfejsów cz. II Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 3 Elementy Swing wszystkie elementy graficzne (przyciski, kontrolki) rysowane są od zera z poziomu Javy; ten sam wygląd i zachowanie

Bardziej szczegółowo

Architektura interfejsu użytkownika

Architektura interfejsu użytkownika Uniwersytet Jagielloński Interfejsy graficzne Wykład 3 Architektura interfejsu użytkownika Barbara Strug 2011 Hall of shame Hall of Shame Hall of Fame O czym dzisiaj Model Widok- Kontroler Hierarchia widoków

Bardziej szczegółowo

Visual Studio instalacja

Visual Studio instalacja Visual Studio 2017 - instalacja Do tej pory napisaliśmy wiele programów, z czego niemal wszystkie były aplikacjami konsolowymi. Najwyższy więc czas zająć się tworzeniem aplikacji z graficznym interfejsem

Bardziej szczegółowo

Dodanie nowej formy do projektu polega na:

Dodanie nowej formy do projektu polega na: 7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie

Bardziej szczegółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 5, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 5, część 3 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do grafiki w Javie 2. Budowa GUI: komponenty, kontenery i układanie komponentów 3. Budowa GUI: obsługa zdarzeń

Bardziej szczegółowo

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit)

Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit) Rysowanie prostych obiektów graficznych przy użyciu biblioteki AWT (Abstract Window Toolkit) Biblioteka Abstrakcyjnych Narzędzi Okienkowych AWT (Abstract Window Toolkit) jako historycznie pierwsza w JDK

Bardziej szczegółowo

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

Wykład 4_1. Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Wykład 4_1 Interaktywne aplety obsługa zdarzeń, uruchamianie apletu przez przeglądarkę lub maszynę wirtualną Javy. Przykład 1 a) Program ProstyAplet2.class uruchomiony jako aplet w przeglądarce (appletviewer)

Bardziej szczegółowo

Programowanie w języku JAVA. Wykład IV Swing - GUI

Programowanie w języku JAVA. Wykład IV Swing - GUI Programowanie w języku JAVA Wykład IV Swing - GUI Architektura 2 JFC (Java Foundation Classes) zbiór klas do budowy interfejsu graficznego użytkownika i interaktywności aplikacji Javy Komponenty Swing

Bardziej szczegółowo

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

PWŚG Ćwiczenia 13. Ukończoną pracę należy przesłać na adres   lub PWŚG Ćwiczenia 13 Ukończoną pracę należy przesłać na adres email: sara.m.jurczyk@gmail.com lub sarajurczyk@kul.lublin.pl Zadanie. Stwórz aplikację stawiającą stemple w postaci figur geometrycznych: koło,

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 05.05.2014 WYKŁAD 11 GUI w Swing cz. 1 Wykład

Bardziej szczegółowo

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

SWING c.d. przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe. SWING c.d. ZAGADNIENIA: przydatne narzędzia: JFileChooser, JOptionPane. drag'n drop, menu kontekstowe. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/dnd/ http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

SWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty.

SWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty. SWING ZAGADNIENIA: wprowadzenie, kontenery i komponenty, LayoutManager, komponenty tekstowe. inne przydatne komponenty. MATERIAŁY: http://docs.oracle.com/javase/tutorial/uiswing/ http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

JAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009

JAVA CZ.2 Programowanie obiektowe. poniedziałek, 20 kwietnia 2009 JAVA CZ.2 Programowanie obiektowe Przygotowanie projektu aplikacji 1. File >New Project 2. Z listy Categories z panelu Projects wybieramy Java Application. Nasz wybór zatwierdzamy przyciskiem Next. 3.

Bardziej szczegółowo

Kurs programowania 2 - listy

Kurs programowania 2 - listy Kurs programowania 2 - listy Listy rozwijane (ComboBox) Listy rozwijane (rozwijalne) można tworzyć przy użyciu klasy ComboBox. W tabeli poniżej właściwości udostępniane przez tę kontrolkę. Najważniejsza

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia nowego projektu (poniżej są utworzone projekty) Po kliknięciu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja wielowątkowa prosty komunikator Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host

Bardziej szczegółowo

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

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

Bardziej szczegółowo

Jak dodać własny szablon ramki w programie dibudka i dilustro

Jak dodać własny szablon ramki w programie dibudka i dilustro Aby dodać własną ramkę otwórz moduł administracyjny dibudkaadmin.exe, wejdź do zakładki Ramki, tła, id i następnie Edycja. 1. Kliknij przycisk Dodaj ramkę 2. Określ wymiary nowej ramki Jeżeli dodajesz

Bardziej szczegółowo

JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006

JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006 1 Najprostszy program okienkowy 1.1 Kod: JAVA Materiały do laboratorium III wersja niezaawansowana Marcin Borkowski WSEiZ czerwiec 2006 public class okno1 extends Frame public okno1() ); okno1 o = new

Bardziej szczegółowo

Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class

Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class Tworzymy projekt File->New Project->Java Application, przy czym tym razem odznaczamy create main class Mamy Prawym przyciskiem na default packeges I wybieramy New JFrame. Teraz pamiętajmy o podaniu jakiejś

Bardziej szczegółowo

Java Podstawy. Michał Bereta

Java Podstawy. Michał Bereta Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu

Bardziej szczegółowo

Wykład 3: Projektowanie graficznych interfejsów użytkownika w Java

Wykład 3: Projektowanie graficznych interfejsów użytkownika w Java Programowanie komputerów Wykład 3: Projektowanie graficznych interfejsów użytkownika w Java dr inż. Walery Susłow walery.suslow@ie.tu.koszalin.pl Graficzny interfejs użytkownika GUI (Graphical User Interface),

Bardziej szczegółowo

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Applety Java. Applety są przykładem kodu Java wykonywanego po stronie klienta, ale bez ujawnionej (jak w przypadku skryptu) wersji źródłowej

Applety Java. Applety są przykładem kodu Java wykonywanego po stronie klienta, ale bez ujawnionej (jak w przypadku skryptu) wersji źródłowej Applety Java Są to komponenty stron WWW o ukrytym kodzie Applety są pisane w zwykłej Javie i dlatego kompilowane do pliku(ów) *.class, a nie interpretowane jak skrypty w JavaScript Aby przeglądarka odtwarzała

Bardziej szczegółowo

MS Access formularze

MS Access formularze MS Access formularze Formularze to obiekty służące do wprowadzania i edycji danych znajdujących się w tabelach. O ile wprowadzanie danych bezpośrednio do tabel odbywa się zawsze w takiej samej formie (arkusz

Bardziej szczegółowo

BAZY DANYCH Formularze i raporty

BAZY DANYCH Formularze i raporty BAZY DANYCH Formularze i raporty Za pomocą tabel można wprowadzać nowe dane, przeglądać i modyfikować dane już istniejące. Jednak dla typowego użytkownika systemu baz danych, przygotowuje się specjalne

Bardziej szczegółowo

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

1. Język JAVA. 1. Pierwszy program. 2. Kalkulator. 3. Klasy. 4. Dziedziczenie 1. Język JAVA 1. Pierwszy program Napisać program, który: 1. wypisuje na ekran dowolny tekst. 2. Wypisuje argumenty podane w linii poleceń. 2. Kalkulator 1. Program wypisuje sumę liczb podanych jako parametr.

Bardziej szczegółowo

Scenariusz Lekcji. Część organizacyjna:

Scenariusz Lekcji. Część organizacyjna: Scenariusz Lekcji Część organizacyjna: Rok szkolny: 2014/2015 Data: 03.III.2015r Imię i nazwisko nauczyciela: Magdalena Ślusarczyk Przedmiot: programowanie strukturalne i obiektowe Klasa: 4c grupa 2 Liczba

Bardziej szczegółowo

BAZY DANYCH Panel sterujący

BAZY DANYCH Panel sterujący BAZY DANYCH Panel sterujący Panel sterujący pełni z reguły rolę centrum, z którego wydajemy polecenia i uruchamiamy różnorodne, wcześniej zdefiniowane zadania, np. wyświetlamy formularze lub drukujemy

Bardziej szczegółowo

Programowanie w środowisku graficznym- wykład 10 Programowanie GUI cz2

Programowanie w środowisku graficznym- wykład 10 Programowanie GUI cz2 1 Programowanie w środowisku graficznym- wykład 10 Programowanie GUI cz2 Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/

Bardziej szczegółowo

LABORATORIUM 7 Cel: 1_1

LABORATORIUM 7 Cel: 1_1 LABORATORIUM 7 Cel: Budowa klas z wykorzystaniem dziedziczenia oraz implementowania interfejsów. Wprowadzenie do trybu graficznego -cd. Animacje obiektów w trybie graficznym obsługa zdarzeń od klawiatury

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 12: GUI. Aplety. 5/19/2013 S.Deniziak:Programowanie obiektowe 1 Pakiety graficzne w Javie AWT (Abstract Window Toolkit) Swing Java 1.1 Java 2.0 Java 2D Java 3D Java Media

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Systemy operacyjne na platformach mobilnych

Systemy operacyjne na platformach mobilnych Systemy operacyjne na platformach mobilnych Wykład 2 Grzegorz Jabłoński, Piotr Perek Katedra Mikroelektroniki i Technik Informatycznych Zagadnienia wykładu Interfejs użytkownika Activity Views Resources

Bardziej szczegółowo

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

Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych Tworzenie projektu zawierającego aplet w środowisku NetBeans. lab1 Dr inż. Zofia Kruczkiewicz Etap 1 - Tworzenie apletu 1. Wybierz z menu File\ New Project. Na formularzu New Project wybierz w oknie Categories

Bardziej szczegółowo

Tworzenie prezentacji w MS PowerPoint

Tworzenie prezentacji w MS PowerPoint Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje

Bardziej szczegółowo

Programowanie w języku Java WYKŁAD

Programowanie w języku Java WYKŁAD Programowanie w języku Java WYKŁAD dr inż. Piotr Zabawa Certyfikowany Konsultant IBM/Rational e-mail: pzabawa@pk.edu.pl www: http://www.pk.edu.pl/~pzabawa 12.05.2014 WYKŁAD 11 GUI w Swing cz. 2 Wykład

Bardziej szczegółowo

Aplikacja wielow tkowa prosty komunikator

Aplikacja wielow tkowa prosty komunikator Aplikacja wielow tkowa prosty komunikator Klient 0 (host 1) W tek 0 Komponent serwera W tek pochodny 3.1 Klient 1 (host 2) W tek 1 Komponent serwera W tek pochodny 3.2 Host 4 Serwer W tek 3 Klient 2 (host

Bardziej szczegółowo

I. Spis treści I. Spis treści... 2 II. Kreator szablonów... 3 1. Tworzenie szablonu... 3 2. Menu... 4 a. Opis ikon... 5 3. Dodanie nowego elementu...

I. Spis treści I. Spis treści... 2 II. Kreator szablonów... 3 1. Tworzenie szablonu... 3 2. Menu... 4 a. Opis ikon... 5 3. Dodanie nowego elementu... Kreator szablonów I. Spis treści I. Spis treści... 2 II. Kreator szablonów... 3 1. Tworzenie szablonu... 3 2. Menu... 4 a. Opis ikon... 5 3. Dodanie nowego elementu... 7 a. Grafika... 7 b. Tekst... 7 c.

Bardziej szczegółowo

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2. Spis treści: 1 Podstawy pracy z aplikacją... 2 1.1 Układ strony... 2 strona 1 z 7 1 Podstawy pracy z aplikacją InDesign jest następcą starzejącego się PageMakera. Pod wieloma względami jest do niego bardzo

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Interfejsy w Java. Przetwarzanie równoległe. Wątki. Informatyka I Interfejsy w Java. Przetwarzanie równoległe. Wątki. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Interfejsy w Java Pojęcie interfejsu w programowaniu Deklaracja

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa

Bardziej szczegółowo

Podręcznik użytkownika programu. Ceremonia 3.1

Podręcznik użytkownika programu. Ceremonia 3.1 Podręcznik użytkownika programu Ceremonia 3.1 1 Spis treści O programie...3 Główne okno programu...4 Edytor pieśni...7 Okno ustawień programu...8 Edycja kategorii pieśni...9 Edytor schematów slajdów...10

Bardziej szczegółowo

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0

Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0 Instrukcja obsługi funkcji specjalnych szablonu C01 v.1.0 UWAGA 1: Przed dokonaniem jakichkolwiek zmian, zalecamy skopiować wcześniej kod html modułu do pliku na lokalnym dysku. W przypadku problemów ułatwi

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java 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

Bardziej szczegółowo

JavaFX. Zaawansowane technologie Javy 2019

JavaFX. Zaawansowane technologie Javy 2019 JavaFX Zaawansowane technologie Javy 2019 Historia postania JavaFX Początkowym pakietem do tworzenia aplikacji GUI w Javie był pakiet AWT. Niedługo po wprowadzeniu został on zastąpiony pakietem Swing,

Bardziej szczegółowo

Edytor tekstu MS Office Word

Edytor tekstu MS Office Word Edytor tekstu program komputerowy ukierunkowany zasadniczo na samo wprowadzanie lub edycję tekstu, a nie na nadawanie mu zaawansowanych cech formatowania (do czego służy procesor tekstu). W zależności

Bardziej szczegółowo

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

setdefaultcloseoperation(jframe.exit_on_close);//obsługa zamykania aplikacji setvisible(true); } //wyświetlenie okna Programowanie wizualne- pakiet Swing 1. Główny obiekt interfejsu uŝytkownika - obiekt klasy JFrame 1.1. Przykład prostej aplikacji Zdefiniowanie klasy dziedziczącej po klasie JFrame z pakietu Swing (lub

Bardziej szczegółowo

Programowanie zdarzeniowe

Programowanie zdarzeniowe Programowanie zdarzeniowe III. Zaawansowana obsługa zdarzeń Małgorzata Prolejko ZDA JA16Z03 Plan Hierarchia zdarzeń Typy zdarzeń niskiego poziomu Zdarzenia okna Obsługa kliknięcia myszy Adaptery Zdarzenia

Bardziej szczegółowo

Komputery I (2) Panel sterowania:

Komputery I (2) Panel sterowania: Komputery I (2) Paweł Jamer Panel sterowania: Podstawowym miejscem z którego zarządzamy ustawieniami systemu Windows jest panel sterowania. Znaleźć tam możemy wszelkiego rodzaju narzędzia umożliwiające

Bardziej szczegółowo

Padlet wirtualna tablica lub papier w Internecie

Padlet wirtualna tablica lub papier w Internecie Padlet wirtualna tablica lub papier w Internecie Umiejętność gromadzenia, a potem przetwarzania, wykorzystania i zastosowania informacji w celu rozwiązania jakiegoś problemu, jest uważana za jedną z kluczowych,

Bardziej szczegółowo

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.

1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt. Grafika w dokumencie Wprowadzanie ozdobnych napisów WordArt Do tworzenia efektownych, ozdobnych napisów służy obiekt WordArt. Aby wstawić do dokumentu obiekt WordArt: 1. Umieść kursor w miejscu, w którym

Bardziej szczegółowo

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i Program szkolenia: Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i JFace Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Kompleksowe tworzenie aplikacji

Bardziej szczegółowo

Projektowanie aplikacji internetowych laboratorium

Projektowanie aplikacji internetowych laboratorium Projektowanie aplikacji internetowych laboratorium Programowanie w języku Java Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne NetBeans 7 (zrzuty ekranów pochodzą z wersji

Bardziej szczegółowo