Aplikacje w Javie wykład 12 Programowanie GUI

Save this PDF as:
 WORD  PNG  TXT  JPG

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 2008

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 reprezentowane 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 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 3

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 Swingu 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. Swingu) i ciężkich (AWT), jednak jest to nie polecane i obarczone pewnymi restrykcjami. Zalecane jest, aby dodawać komponenty Swingu 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 Swingu) 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 Swingu, 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 12 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, jesli 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)

13 Komponenty Swing 13

14 Właściwości komponentów (AWT i Swing) 14 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).

15 Właściwości komponentów 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. 15

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 Swingu jest nieprzezroczysta. Wyjątkiem jest etykieta JLabel. Zatem aby ustalić tło etykiety Swingu 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: getcopmonentcount() 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, JApplet, 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 Swingu, pochodzą od klasy Window.

22 Okna ramowe - JFrame 22 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 Swingu). 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() tytul 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)

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 komponetami 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 Swingu (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 Swingu 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 Swingu 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 Swingu) 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 Swingu 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 Swingu) 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 Schemat aplikacji Swing 32 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 Swingu 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 Swingu, 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 Swingu 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.

33 Schemat aplikacji Swing 33 Schemat wywyołania metody invokelater(..) SwingUtilities.invokeLater(new Runnable() { public void run() { // tu działania na komponentach Swingu ); 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 Swingu są wielowątkowo bezpieczne (mogą być wywoływane z wielu watkó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).

34 Szablon aplikacji Swing 34 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(); );

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

36 Szablon aplikacji Swing 36 // 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.

37 Delegacyjny model obsługi zdarzeń 37 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)

38 Delegacyjny model obsługi zdarzeń 38 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 Swingu - 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).

39 Delegacyjny model obsługi zdarzeń 39 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ń).

40 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) 40

41 41 Delegacyjny model obsługi zdarzeń - przykład 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() { 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 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(); );

42 Delegacyjny model obsługi zdarzeń przykład 2 42 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 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(); );

43 Delegacyjny model obsługi zdarzeń przykład 3 43 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 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(); );

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java SE Laboratorium nr 5. Temat: Obsługa zdarzeń Java SE Laboratorium nr 5 Temat: Obsługa zdarzeń 1 Obsługa zdarzeń 1. Definicja i idea Każda z aplikacji zmienia swój stan (reaguje) pod wpływem zdarzeń. Mogą to być zdarzenia generowane przez urządzenia

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

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

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Compas 2026 Vision Instrukcja obsługi do wersji 1.07

Compas 2026 Vision Instrukcja obsługi do wersji 1.07 Compas 2026 Vision Instrukcja obsługi do wersji 1.07 1 2 Spis treści Integracja...5 1.Compas 2026 Lan...5 Logowanie...7 Użytkownicy...8 Raporty...10 Tworzenie wizualizacji Widoki...12 1.Zarządzanie widokami...12

Bardziej szczegółowo

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze. ARKUSZ KALKULACYJNY Arkusz strona zawierająca informacje Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze. Obszar roboczy fragment ekranu, na którym dokonywane są obliczenia Wiersze

Bardziej szczegółowo

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej. W przygotowaniu ćwiczeń wykorzystano m.in. następujące materiały: 1. Program AutoCAD 2012. 2. Graf J.: AutoCAD 14PL Ćwiczenia. Mikom 1998. 3. Kłosowski P., Grabowska A.: Obsługa programu AutoCAD 14 i 2000.

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

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM

Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM Opis użytkowy aplikacji ebookreader Przegląd interfejsu użytkownika a. Okno książki. Wyświetla treść książki podzieloną na strony. Po prawej stronie

Bardziej szczegółowo

Interfejsy i klasy wewnętrzne

Interfejsy i klasy wewnętrzne Interfejsy i klasy wewnętrzne mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Interfejs klasy sposób komunikacji z jej obiektami (zestaw składowych publicznych). Określa on zestaw

Bardziej szczegółowo

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1 Tworzenie okna dialogowego w edytorze raportu SigmaNEST część 1 Edytor raportu SigmaNEST to wszechstronne narzędzie umożliwiające zarówno dostosowanie każdego raportu pod specyficzne oczekiwania klienta,

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

Java jako język programowania

Java jako język programowania Java jako język programowania Interpretowany programy wykonują się na wirtualnej maszynie (JVM Java Virtual Machine) Składnia oparta o język C++ W pełni zorientowany obiektowo (wszystko jest obiektem)

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 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 w klasie! 2 Język

Bardziej szczegółowo

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

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i

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

Dodawanie grafiki i obiektów

Dodawanie grafiki i obiektów Dodawanie grafiki i obiektów Word nie jest edytorem obiektów graficznych, ale oferuje kilka opcji, dzięki którym można dokonywać niewielkich zmian w rysunku. W Wordzie możesz zmieniać rozmiar obiektu graficznego,

Bardziej szczegółowo

Temat: Organizacja skoroszytów i arkuszy

Temat: Organizacja skoroszytów i arkuszy Temat: Organizacja skoroszytów i arkuszy Podstawowe informacje o skoroszycie Excel jest najczęściej wykorzystywany do tworzenia skoroszytów. Skoroszyt jest zbiorem informacji, które są przechowywane w

Bardziej szczegółowo

POMOC / INSTRUKCJA OBSŁUGI

POMOC / INSTRUKCJA OBSŁUGI POMOC / INSTRUKCJA OBSŁUGI 1. Powiększanie mapy 2. Plakat 3. Schemat lekcji 4. Broszura informacyjna 5. Instrukcja obsługi Pasek narzędzi i menu wyboru Zmiana skali mapy Mini mapa - podgląd na położenie

Bardziej szczegółowo

Podstawy technologii cyfrowej i komputerów

Podstawy technologii cyfrowej i komputerów BESKIDZKIE TOWARZYSTWO EDUKACYJNE Podstawy technologii cyfrowej i komputerów Budowa komputerów cz. 2 systemy operacyjne mgr inż. Radosław Wylon 2010 1 Spis treści: Rozdział I 3 1. Systemy operacyjne 3

Bardziej szczegółowo

Edytor tekstu OpenOffice Writer Podstawy

Edytor tekstu OpenOffice Writer Podstawy Edytor tekstu OpenOffice Writer Podstawy OpenOffice to darmowy zaawansowany pakiet biurowy, w skład którego wchodzą następujące programy: edytor tekstu Writer, arkusz kalkulacyjny Calc, program do tworzenia

Bardziej szczegółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

OKNO NA ŚWIAT - PRZECIWDZIAŁANIE WYKLUCZENIU CYFROWEMU W MIEŚCIE BRZEZINY

OKNO NA ŚWIAT - PRZECIWDZIAŁANIE WYKLUCZENIU CYFROWEMU W MIEŚCIE BRZEZINY Projekt OKNO NA ŚWIAT - PRZECIWDZIAŁANIE WYKLUCZENIU CYFROWEMU W MIEŚCIE BRZEZINY współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Rozwoju Regionalnego w ramach Programu Operacyjnego

Bardziej szczegółowo

1.1. Przykład projektowania konstrukcji prętowej z wykorzystaniem ekranów systemu ROBOT Millennium

1.1. Przykład projektowania konstrukcji prętowej z wykorzystaniem ekranów systemu ROBOT Millennium ROBOT Millennium wersja 20.0 - Podręcznik użytkownika (PRZYKŁADY) strona: 3 1. PRZYKŁADY UWAGA: W poniższych przykładach została przyjęta następująca zasada oznaczania definicji początku i końca pręta

Bardziej szczegółowo

Przewodnik... Tworzenie Landing Page

Przewodnik... Tworzenie Landing Page Przewodnik... Tworzenie Landing Page Spis treści Kreator strony landing page Stwórz stronę Zarządzaj stronami 2 Kreator strony landing page Kreator pozwala stworzyć własną stronę internetową z unikalnym

Bardziej szczegółowo

Podstawowe informacje o apletach

Podstawowe informacje o apletach Podstawowe informacje o apletach 1 Co to są aplety? Aplety (ang. applets) są to programy napisane w Javie i uruchamiane w przeglądarce WWW po stronie klienta. Posiadają następujące cechy: wymagają obecności

Bardziej szczegółowo

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP Niniejszy tutorial jest wyłączną własnością Doroty Ciesielskiej Zapraszam na moją stronę http://www.direktorek03.wm studio.pl oraz

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych Ćwiczenia nr 4 Arkusz kalkulacyjny i programy do obliczeń statystycznych Arkusz kalkulacyjny składa się z komórek powstałych z przecięcia wierszy, oznaczających zwykle przypadki, z kolumnami, oznaczającymi

Bardziej szczegółowo

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1 Wyższa Szkoła Ekologii i Zarządzania Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1 Slajd 1 Excel Slajd 2 Ogólne informacje Arkusz kalkulacyjny podstawowe narzędzie pracy menadżera Arkusz

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący Laboratorium 13: GUI - Graficzny interfejs użytkownika Cel: Projektowanie z wykorzystaniem Graficzny Interfejs Użytkownika Czas: Wprowadzenia

Bardziej szczegółowo

Laboratorium programowania urządzeń mobilnych

Laboratorium programowania urządzeń mobilnych Laboratorium programowania urządzeń mobilnych Wprowadzenie Hierarcha klas dla aplikacji typu Silverlight tworzonej przez Visual Studio jest następująca: Obsługa ekranu W urządzeniach z Windows Phone 7

Bardziej szczegółowo

5. Bazy danych Base Okno bazy danych

5. Bazy danych Base Okno bazy danych 5. Bazy danych Base 5.1. Okno bazy danych Podobnie jak inne aplikacje środowiska OpenOffice, program do tworzenia baz danych uruchamia się po wybraniu polecenia Start/Programy/OpenOffice.org 2.4/OpenOffice.org

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

System Informatyczny CELAB. Terminy, alarmy

System Informatyczny CELAB. Terminy, alarmy Instrukcja obsługi programu 2.18. Terminy, alarmy Architektura inter/intranetowa Aktualizowano w dniu: 2007-09-25 System Informatyczny CELAB Terminy, alarmy Spis treści 1. Terminy, alarmy...2 1.1. Termin

Bardziej szczegółowo

Czcionki bezszeryfowe

Czcionki bezszeryfowe Czcionki szeryfowe Czcionki szeryfowe wyposażone są w dodatkowe elementy ułatwiające czytanie. Elementy te, umieszczone w dolnej i górnej części liter tworzą poziome, optyczne linie ułatwiające prowadzenie

Bardziej szczegółowo