PJV08 1 GUI (Graphical User Interface)‏ Vizuální a interaktivní komunikaci počítač-člověk podporují balíčky: java.awt - obsahuje: - komponenty: knoflíky,

Slides:



Advertisements
Podobné prezentace
Základy HTML – vkládání objektů
Advertisements

MALUJEME ZÁKLADNÍ VZDĚLÁVÁNÍ, INFORMAČNÍ
Technologie pro publikování na webu 1
Počítačová grafika Nám umožňuje:
(instance konkrétní třídy)
Základy HTML.
Formuláře Formuláře lze nalézt téměř na každém webu. Formuláře lze nalézt téměř na každém webu. Použití formulářů: Použití formulářů: Blog Blog Uživatelské.
MS Malování II. VY_32_INOVACE_58_MS_Malovani_II.
Počítače a programování 2 Přednáška Jiří Šebesta.
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
TVORBA WEBOVÝCH STRÁNEK
VY_32_INOVACE_E3-13 KRESLÍME RASTROVOU GRAFIKOU I. AUTOR: Mgr. Vladimír Bartoš VYTVOŘENO: ZÁŘÍ 2011 STRUČNÁ ANOTACE: VÝKLAD LÁTKY K TÉMATU KRESBY RASTOVOU.
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Miloslav Mazanec © 2013 Počítačová grafika.
Jak vytvořit vlastní prezentaci ?
Podmíněné vykonávání a rozvětvení. Co je to? Podmíněné vykonávání = nechceme provést všechny příkazy, chceme určité části kódu něčím podmínit Rozvětvení.
Objektové programování
Gymnázium, Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Hodonín Tvorba webu Úvod do CSS 1.
Jedenácté cvičení Vlákna. Java cv112 Vlákna Operační systém Mutitasking – více úloh se v operačním programu vykonává „současně“ Java Multithreading -
Kaskádové styly - CSS.
Strategy. Strategy – „All-in-1“ na začátek class AStrategy { public: virtual void Algorithm()=0; protected: AStrategy(); }; class SpecificStrategy: public.
Composite [kompozit, ne kompozajt]. Composite Výslovnost  kompozit, ne kompozajt Účel  Popisuje, jak postavit hierarchii tříd složenou ze dvou druhů.
Alg91 Textové soubory Na rozdíl od jiných typů souborů jsou textové soubory určené pro gramotné lidské oko. Textový soubor je posloupnost znaků členěná.
Windows Presentation Foundation 2D grafika. 2D tvary Elementy UI stromu Stejné jako jiné ovládací prvky a elementy Mohou mít k sobě připojeny události,
Kreslíme rastrovou grafikou I. v programu MALOVÁNÍ
TNPW1 Cvičení
Základní škola a mateřská škola Bzenec Číslo projektu: CZ.1.07/1.4.00/ Číslo a název šablony klíčové aktivity: III/2: využívání ICT – inovace Vypracoval/a:
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
Tvorba www stránek Seznam, tabulky, grafika a barvy (1.část) Ing. Miroslav Vachůn, Ph.D.
OSNOVA: a) Přetížení členských funkcí b) Dědičnost tříd Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování 2 pro obor EST BPC2E.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
Malování.
Šesté cvičení Výjimky Balíky.
VISUAL BASIC PRALG.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
HTML – TABULKY. - uzavírá celou strukturu tabulky atributy tabulky:  align - obtékání tabulky ostatním textem – right, left, center  cellpadding – vnitřní.
Decorator. Rozšiřuje objekty o dodatečné chování  rozšiřuje konkrétní objekty, ne třídy  rozšiřuje objekt dynamicky, tj. za běhu Upřednostňuje kompozici.
:: java advanced imagingds :: 36APG - JAI david sedláček javaai/jai/index.html.
Windows Presentation Foundation Ovládací prvky. Ovládací prvky Všechny standardní prvky jsou dostupné a některé nové Třídy jsou společné pro WPF System.Windows.Controls,
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Grafika ve Windows Přednáška č. 12. Informace k 13. přednášce  Bude koncipována formou konzultací k projektům – kancelář PA-336 (Purkyňova 118)
Strategy. Motivace Různé algoritmy pro stejnou akci Hromada kódu v mnoha podmínkách Důsledky  Komplexnost  Špatná čitelnost  Těžká správa kódu  Těžka.
Uživatelská rozhraní Uživatelská rozhraní 8. cvičení.
Internetové technologie Petr Kašpar KAS265. Obsah Formát PDF Možnosti tvorby v PHP Třída FPDF České fonty Ahoj světe! Buňky Záhlaví/zápatí Pluginy Komplexní.
Praha & EU: Investujeme do vaší budoucnosti Evropský sociální fond Gymnázium, Praha 10, Voděradská 2 Projekt OBZORY GUI v Javě úvod.
PROGRAMOVÁNÍ 3ITA,3ITB Jaroslav Burdys Hlavní zdroj:
Delphi – práce se základními komponentami (2. hodina) OB21-OP-EL-KON-DOL-M-4-008B Orbis pictus 21. století.
Snímek 1 PowerPoint2OP381 Manažerská informatika 1 2OP381 Manažerská informatika 1 Microsoft PowerPoint 2016 – 1. část
Obrázky podporují balíčky: java.applet java.awt ~.image ~.renderable
PJV15 1 Vnořené ( nested ) a vnitřní ( inner ) členy Třídy či interfejsy mohou být členy tříd či interfejsů. Je-li X obalem Y a Y obalem Z, pak Z získá.
Název školy Střední škola elektrostavební a dřevozpracující, Frýdek-Místek, příspěvková organizace Adresa školy Pionýrů 2069, Frýdek-Místek IČ
Applety Applet ( Application program–let ) je javský program upravený ke spuštění v klientově prohlížeči ( browseru ). Prohlížeč je aplikace ( application.
Události ( Events ) GUI definuje model událostí ( event model ) – od Javy 1.1 je to tzv. delegační model. ( Původní tzv. hierarchický model se již neužívá.
VY_32_INOVACE_PR2_16 Grafika.
Výukový materiál zpracován v rámci projektu
Typový příklad 3 – zadání 1
Návrhový vzor Flyweight
Polymorfismus = Mnohotvarost
Výukový materiál zpracován v rámci projektu
Vytvoření formuláře Access (11).
Swing je součást JFC Je to vylepšené GUI funkčně, esteticky i ergonomicky ( nazvaný náhodně větou: "Swing dancing is getting to be really big." - v San.
Bridge.
Reflexe jako introspekce
téma vyjádření Obrázek SmartArts obrázky na červeném pozadí
C# přehled vlastností.
Layout v Xamarin.Forms Polohovací prvky
Výčtové typy ( Java 5 ) Výčtové typy jsou speciální třídy zavedené pro větší bezpečí a pohodlí. V nejjednodušší variantě se definují příkladmo takto:
Composite “Spojuj a panuj”.
Transkript prezentace:

PJV08 1 GUI (Graphical User Interface)‏ Vizuální a interaktivní komunikaci počítač-člověk podporují balíčky: java.awt - obsahuje: - komponenty: knoflíky, textová pole, menu, posuvníky, grafiku kontejnery: tj. komponenty do kterých lze vkládat komponenty, - layout managery: rozmisťují komponenty v ploše kontejneru. java.awt.event - pojednává události a jejich záchyt. javax.swing - podstatně vylepšuje GUI, plně nahrazuje java.awt, avšak je mnohem složitější. Ukázka v awt :

PJV08 2 Zásady návrhu GUI Kvalita GUI podstatně ovlivňuje efektivitu práce uživatele - i negativně. Uživatel podle GUI posuzuje kvalitu aplikace. Usilujte o jednoduše elegantní návrh s intuitivní a konzistentní funkcionalitou. Rozumě s rozměry, barvami a kontrasty - mají asociované významy. Respektujte styl a zvyklosti uživatele. Poznejte zkušenosti a prostředí uživatelů ( laik vs. expert ). Uvažte jak eventuálně hladce dále GUI rozšiřovat. Jednoduchost bývá lepší než složitost - nepřeplácat komponentami. Uživatel se nesmí ztratit – vyznačujte stopu jak se tam dostal. Nezahltit informacemi a vizuálními podněty – usability testy prototypů. Udržovat konzistenci použití komponent. Konzistence mezi aplikacemi – look and feel. Vnitřní konzistence aplikace. Komponenty mají váhu – navozují závažnost (velikost, font, barva). Pozor na ošidné layouty a resizing. Uvažte standardy a zvyklosti platforem. Uvažte i18n ( i-nternationalizatio-n )‏

PJV08 3 Frame Container ImageObserver MenuContainer Window Component JFrame javax.swing Serializable java.awt.image Accessible javax.accessibilty Object java.io java.awt java.lang RootPaneContainer WindowConstants Struktura

PJV08 4 java.awt Canvas Text Component ButtonLabel ListCheckboxChoice FileDialog Frame Container Dialog Applet ImageObserver MenuContainer ItemSelectableAdjustable Scrollbar ScrollPane Panel Window TextArea TextField Component java.applet JFrame javax.swing JApplet javax.swing BorderLayout FlowLayout Layout = null fixed null JComponent javax.swing java.io. Serializable java.awt.image components Accessible javax.accessibilty Component Orientation

PJV08 5 java.awt Point Font InsetsRectangle Polygon Dimension MenuBarMenu MenuItem Menu Component PopupMenu Checkbox MenuItem MenuContainer Cursor Shape ScrollPane Adjustable Font Metrics Rectangle2D Rectangular Shape.geom Point2D Dimension2D.geom Serializable.geom MenuShortcut Accessible javax.accessibilty

PJV08 6 java.awt KeyEvent Dispatcher Keyboard FocusManager KeyEvent PostProcessor DefultKeyboard FocusManager DefaultFocus Manager Focus Manager Page Attributes Job Attributes SplashScreen PritntJob javax.swing PointerInfo Desktop 1.6 MouseInfo 1.5 Robot Composite Alpha Composite CompositeContext PrintGraphics PaintContext Focus TraversalPolicy ContainerOrder FocusTraversalPolicy DefaultFocus TraversalPolicy DisplayMode Rendering Hints Map java.util SecondaryLoop 1.7

PJV08 7 java.awt Media Tracker Graphics 2D Image Volatile Image Buffered Image.image Graphics.image ToolKit BasicStroke Component Orientation ActiveEvent Paint Gradient Paint Transparency Multi GradientPaint Linear GradientPaint Radial GradientPaint 1.6 Color SystemColor Color UIResource Stroke EventQueue Graphics Environment EventObject java.util Graphics Device Image Capabilities Texture Paint AWTEvent Multicaster ** listenery.event AWTKey Stroke KeyStroke Invocation Event.eventjavax.swing.plaf AWT Event *events Color Space java.awt.color

PJV08 8 Window default LayoutManager ~ rozmisťovač LayoutManager LayoutManager2 Card Layout Grid Layout Border Layout Box Layout Overlay Layout Spring Layout javax.swing Panel default Flow - jako text přetékající na další řádky ( alignment L/R a centrování )‏ Border - jako mapa s oblastmi ( C,N,E,S,W ) a jen pro pět komponent. Card - jako balíček karet - vidět je jen vrchní karta. Grid - pravidelná mřížka - jedna komponenta zabere jen jedno k políčko. GridBag - nepravidelná mřížka - jedna komponenta zabere i více políček. null - určí programátor pomocí setBounds( x, y, w, h ). Flow Layout GridBag Layout ScrollPane Layout ViewPort Layout

PJV08 9 java.awt: Layouts Čísla vyjadřují index komponenty v seznamu. Center North South WE GridLayout BorderLayout GridBagLayout FlowLayout e s t s t a BorderLayout má pět oblastí. V každé zobrazí je jednu komponentu – poslední z přidělených do oblasti. Centrální oblast je vzadu – event. překrytá ostatními. Indexy oblastí jsou dle JBuilder – designeru. CardLayout

PJV08 10 Metrika Vizuální komponenty i displej se rozměřují v pixelech takto: x y height width 0,0 w h w-1, h-1 Tyto parametry se zadávají ve čtveřici či dvojici vždy takto ( příklad ): setLocation( x, y ) new Point( x, y ) move ( x, y ) setSize( w, h ) new Dimension( w, h ) setBounds( x, y, w, h ) new Rectangle( x, y, w, h ) drawOval( x, y, w, h )

PJV08 11 Abstraktní třída Component je velmi bohatá – obsahuje jen konkrétní metody pro ovládání: velikosti, umístění a viditelnosti barvy pozadí a popředí událostí fokusu myši klávesnice kurzoru grafiky metoda paint( Graphics g) je prázdná a update ( Graphics g) jen volá paint písma obrázky animace

PJV08 12 Třída java.awt.Container Do kontejnerů se vkládají komponenty a další kontejnery ( mimo stromu Window – jsou to top level containers ), čímž vznikne strom. Kontejner vede seznam komponent dle něhož LayoutManagery rozmísťují komponenty. Metody pro práci se seznamem komponent: - add( Component comp ) – přidá na konec. - add( Component comp, Object constraints ) – a navíc udává omezení. - add( Component comp, int index ) – přidá na udanou pozici. - remove( Component comp ), remove( int index ), removeAll( ). - list(... ) – výpis aktuální stavu seznamu. Dále lze nastavovat a zjišťovat typ rozmístění metodami: - setLayout( LayoutManager mgr ) a LayoutManager getLayout( ). měnit rozmístění komponent pomocí metody: - invalidate( ) – zneplatní tento a všechny obalující kontejnery ( parents ). - validate( ) – znovu rozmístí všechny své komponenty. update( Graphics g ) podmíněně volá paint( g ). pracovat s fokusem.

PJV08 13 Abstraktní třída java.awt.Graphics Objektem této třídy lze vytvářet a měnit kresby, texty a obrázky v objektech typu Component ( tj. Canvas, Panel, Frame, Applet, Frame atd. ) pomocí překryté zděděné prázdné metody paint( Graphics g ). Tuto nevolá program přímo nýbrž metodou repaint( ) anebo ji volá JVM. public void paint( Graphics g ) { g.drawXYZ(... ); // kreslí obrys obrazce v barvě BLACK g.setColor( c1 ); // nastaví pero na barvu c1 g.fillXYZ(... ); // kreslí plný obrazec g.setFont( f ); // nastaví font písma g.setColor( c2 ); // nastaví pero na barvu c2 g.drawString( s,... ); // nakreslí text dle fontu barvy c2 g.drawImage( im,... ); // vykreslí obrázek {.gif,.jpg,.png } } Přístup k objektu Graphics lze získat metodou getGraphics( ) a tím získat kontext pro skrytý bufer ( off-screen image ). Toho využívá technika tzv. double–bufferingu pro hladké animace.

PJV08 14 Grafika Jednoduché obrazce a čáry a další metody: clearRect( … ) - přemalování na barvu pozadí dle setBackground( … ) clipRect( … ), getClip( ), setClip( ),... - vytřihovánky a nalepovánky copyArea( … ) - kopírování plošky setFont( … ), getFont( ) - práce s fonty getFontMetrics( ) - měření nápisů dispose( ) - uvolnění zdrojů drawPolyline()‏

PJV08 15 Třída java.awt.Font podporuje rozmanitá vykreslení textů. Font má konstruktor: public Font ( String name, int style, int size ) kde: name - courier, helvetica, dialog, inputdialog, sanserif, monospaced... style - tvar znaků zadaný konstantami PLAIN, BOLD, ITALIC size - bodová velikost např Příklad: public void paint( Graphics g ) { g.setFont( new Font( "courier", Font.ITALIC + Font.BOLD, 18 ) ); g.drawString( "Hello World", 75, 400 ); } Fonty jsou uspořádány v rodinách. Zjistit dostupné fonty lze takto: GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment( ); Font[ ] ff = ge.getAllFonts( ); Font f = ff[ i ]; boolean b = f.canDisplay( ‘ ’ ); // ?

PJV08 16 Třída java.awt.FontMetrics Proporcionální písmomalířství je obtížné. FontMetrics umožňuje písmo daného fontu měřit a zkusmo pak zvolit vhodný font. K měření fontu slouží metody: getLeading, getAscent, getDescent, getHeight, getMaxAscent, getMaxDescent, getMaxAdvance... a zejména pratické: int charWidth( char c ) – vrací odstup znaku od dalšího v řádce. int stringWidth( String s ) – vrací délku řetězu. FontMetrics fm = g.getFontMetrics( ); int w = fm.stringWidth( "áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ" ); Metrika písma:

PJV08 17 Třída java.awt.Color

PJV08 18 Modifikace kreseb Při objevení ( zpočátku, deiconifikaci, odkrytí ) volá awt vlákno metodu g.clearRect(...), která přemaluje pozadí a pak metodu paint( Graphics g ). Při programovém volání metody repaint(... ), awt vlákno zavolá metodu update( Graphics g ), která defaultně obsahuje: public void update( Graphics g ) {... g.clearRect(... ); paint( g ); } Metodu update lze překrýt, např. tak aby se nepřemalovávalo, čímž se kreslí na předchozí kresbu: public void update( Graphics g ) { paint( g ); } public void paint( Graphics g ) {... } Vnější změnou atributů užitých v kreslících metodách ( tj. g.draw( ) apod. ) a následném zavolání repaint(... ) se kresba změní či animuje. Přepočítání atributů či pospávání by mělo konat samostatné vlákno – nikoli awt – thread ( je dost zaměstnáno a sleduje chování uživatele ).

PJV08 19 update( Graphics g ) { g.clearRect(... ) ; paint( g ); // option } computeIt(... ) { x = 777 ; repaint(... )‏ // future call... } repaint( ), update( ), paint( )‏ application triggered update( Graphics g ) { g.draw...( x,... ) ; paint( g ); // option } awt thread idle user thread awt thread setVisible, unhide, enlarge setBackground, setForeground, setFont, setLayout, validate, add, remove system triggered paint( Graphics g ) { g.draw...( x,... ) ;... } int x = 333; user thread idle partial clearRect( … )‏ default awt swing

PJV08 20 Frame s komponentami public class MyFrame extends Frame { Button b1 = new Button( " OK " ); Button b2 = new Button( " Cancel " ); TextField tf = new TextField( " ********* " ); public MyFrame( ) { super( " This is MyFrame " ); // titulek this.setLayout( new FlowLayout( ) ); // zmena rozmisteni this.add( b1 ); b1.setForeground( Color.GREEN ); this.add( b2 ); b2.setForeground( Color.RED ); this.add( tf ); this.setBounds( 100, 100, 400, 400 ); this.setVisible( true ); // aktivace awt vlakna } public static void main( String [ ] args ) { MyFrame mf = new MyFrame( ); mf.b1.setBackground( Color.YELLOW ); // zmena zvnejsku }

PJV08 21 Vykreslení obrázku public class ImageLoad extends Frame { static Toolkit tk = Toolkit.getDefaultToolkit( ); static Image img = tk.getImage( "C:\\...\\star.gif" ); int width, height ; public ImageLoad( ) throws Exception { MediaTracker mt = new MediaTracker( this ); mt.addImage( img, 0 ); mt.waitForAll( ); width = img.getWidth( this ); height = img.getHeight( this ); this.setBounds( 100, 100, 200, 200); this.setVisible( true ); } public void paint( Graphics g ) { g.drawImage( img, 100, 100, this ); }